如何使用 OLEDB 查询从 Excel 获取列名(如果列名不是从第一行开始)

本文关键字:何使用 开始 一行 查询 获取 OLEDB 如果 Excel | 更新日期: 2023-09-27 18:33:59

我在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].

但它抛出异常,消息如下"没有为一个或多个必需参数提供值"。

我的查询中是否有任何语法错误?

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

如何使用 OLEDB 查询从 Excel 获取列名(如果列名不是从第一行开始)

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

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