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

时间:2012-05-14 05:15:55

标签: c# excel oledb

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

(问题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].

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

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

如果可以,请告诉我们如何更正查询?

1 个答案:

答案 0 :(得分:1)

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

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