excel 工作簿的 OleDb 方案未在方案中显示行
OleDb scheme for excel workbook not showing rows in schema
我正在尝试打开 Excel 工作簿并阅读 sheet。很简单。
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 是 sheet 的名称。哎呀,我是不是把名字弄错了?所以我打开 dtSheet 查看。在调试器中,dtSheet 报告 0 行,而 cn 报告打开状态。所以正在找到工作簿。有人可以建议如何找到 sheet 吗?
谢谢。
S
Spreadsheet 名称的末尾总是有一个 $,您应该将其括起来,因此将 SQL 更改为...
Select * From [Corporate$]
Sheet 带空格的名称用单引号括起来,所以 sheet 称为 "Corporate Data" 将是...
Select * From ['Corporate Data$']
您可以查看可用的 sheets...
DataTable dtTablesList = new DataTable();
dtTablesList = cn.GetSchema("Tables");
我正在尝试打开 Excel 工作簿并阅读 sheet。很简单。
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 是 sheet 的名称。哎呀,我是不是把名字弄错了?所以我打开 dtSheet 查看。在调试器中,dtSheet 报告 0 行,而 cn 报告打开状态。所以正在找到工作簿。有人可以建议如何找到 sheet 吗?
谢谢。
S
Spreadsheet 名称的末尾总是有一个 $,您应该将其括起来,因此将 SQL 更改为...
Select * From [Corporate$]
Sheet 带空格的名称用单引号括起来,所以 sheet 称为 "Corporate Data" 将是...
Select * From ['Corporate Data$']
您可以查看可用的 sheets...
DataTable dtTablesList = new DataTable();
dtTablesList = cn.GetSchema("Tables");