3

我在 OLEDB 查询中面临 2 个问题

(问题 1)

我需要获取用户上传的 Excel 表的列名。我的 excel 连接字符串是

connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileNameAndPath+";
Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";

然后我将使用这个命令

connection.Open();

DataTable schemaTable = connection.GetSchema("Columns");
Taking column name from each datarow like this
string name = (string)row["COLUMN_NAME"];

如果列名出现在 excel 的第一行中,它工作正常。但如果列名行不是从第一行开始,它会将列名命名为“F1,F2,.....”。我该如何解决这个问题?有什么方法可以告诉查询,从哪一行获取列名?

(问题 2)

像列标题一样,我需要从 excel 中选择特定范围内的数据。比如说从第 3 行到第 12 行取数据。所以我使用了这样的查询,

Select RepName, Country from [Sheet1$3:12].

但它抛出了异常,像这样的消息“没有为一个或多个必需参数提供值”。

我的查询中有语法错误吗?

如果是这样,任何人都可以告诉如何更正查询?

4

1 回答 1

1

问题 1 无法通过 OLEDB 解决,Excel 不是数据库,它唯一能做的就是使用第一行作为列名,或者如果第一行为空白,F1 等。

解决此问题的唯一方法是使用互操作删除空白行,然后通过 OLEDB 查询或通过互操作解析整个工作表。

于 2012-08-09T09:44:08.290 回答