1

我下载了一个 XLS 电子表格,并尝试将其导入到 .net 数据表中。表结构如下:

(没有名称的日期列)、流入 (kWh)、流出 (kWh)、库存 (kWh)

连接字符串是:

" 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 互操作工作

有任何想法吗?任何人?

4

1 回答 1

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,对吗?

于 2013-02-06T17:53:45.193 回答