我下载了一个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互操作
有什么想法吗?任何人吗?
答案 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吗?