首页 > 解决方案 > excel工作簿的OleDb方案未在架构中显示行

问题描述

我正在尝试打开 Excel 工作簿并从工作表中读取。很简单。

            string sConnction = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"C:\\Users\\sstowe\\Documents\\Ranorex\\RanorexStudio Projects\\BottomLineII\\BottomLineII\\Widget.xls\";Extended Properties=\"Excel 12.0;HDR=NO\";";
        string sSql = "Select * FROM Corporate";

        OleDbConnection cn = new OleDbConnection(sConnction);
        OleDbCommand command = new OleDbCommand(sSql, cn);
        cn.Open();
        // var reader = command.ExecuteReader();

        // Get all Sheets in Excel File
        var dtSheet = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

你看 var reader... 在我检查时注释掉了。我收到一个错误“Microsoft Office Access 数据库引擎找不到对象'Corporate'。Corporate 是工作表的名称。Gee 说我,我的名称有误吗?所以我打开 dtSheet 来查看. 在调试器中,dtSheet 报告 0 行但 cn 报告打开状态。所以正在找到工作簿。有人可以建议如何找到工作表吗?

谢谢你。

小号

标签: oledb

解决方案


电子表格名称的末尾总是有一个 $,您应该将其括起来,因此将您的 SQL 更改为...

Select * From [Corporate$]

带空格的工作表名称用单引号括起来,因此名为“公司数据”的工作表将是......

Select * From ['Corporate Data$']

您可以查看可用的表格...

DataTable dtTablesList = new DataTable();
dtTablesList = cn.GetSchema("Tables");

推荐阅读