Excel OleDbCommand SELECT *不选择所有列

时间:2013-02-04 11:23:14

标签: c# excel oledb

我下载了一个XLS电子表格,我正在尝试将其导入.net dataTable。表的结构如下:

(没有名字的日期栏),流入(千瓦时),流出(千瓦时),库存(千瓦时)

ConnectionString是:

" Provider=Microsoft.Jet.OleDb.4.0;Data Source=sheet.xls;Extended Properties="Excel 8.0;IMEX = 1"

不起作用的事情:

- "SELECT * FROM [Sheet1$]" selects: NoName, Inflow_(kWh), Outflow_(kWh) and the last column is missing

- "SELECT [Stock (kWh)] FROM [Sheet1$]" returns: "No value given for one or more required parameters."

- "SELECT [Stock_(kWh)] FROM [Sheet1$]" returns: "No value given for one or more required parameters."

- "SELECT * FROM [Sheet1$A:D]" Selects: NoName, Inflow_(kWh), Outflow_(kWh) and the last column is missing

有效的但不是解决方案:

- "SELECT * FROM [Sheet1$D:D]" Selects: Stock_(kWh) but all other columns are missing
  • 如果我在下载后在Excel中打开文件(不保存),然后尝试导入它,那么它就能正常工作。

  • Excel互操作

有什么想法吗?任何人吗?

1 个答案:

答案 0 :(得分:0)

这是我在我的一个应用程序中使用的连接字符串,当我使用SELECT * FROM [worksheetName $]

时,一切正常
string connString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=\"Excel 8.0;IMEX=1\""  

它看起来与你的非常相似,除了我在数据源周围有单引号,我正在逃避我的双引号(假设你也正确地做了,但只是没有显示它)。所以我不认为连接字符串是你的问题。

当您选择D:D以获取缺少的Stock列时,它的数据类型是什么?如果使用GetOleDbSchemaTable查看元数据,它会为该表的列显示什么,以及缺少列的数据类型?

您能否在电子表格中为我们提供一些示例行,以便我们可以看到数据的样子,也许可以尝试一下?此外,它是XLS,而不是XLSX吗?