我在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].
但它抛出了异常,这样的消息“没有给出一个或多个必需参数的值。”
我的查询中是否有语法错误?
如果可以,请告诉我们如何更正查询?
答案 0 :(得分:1)
问题1无法通过OLEDB解决,Excel不是数据库,它唯一能做的就是使用第一行作为列名,或者第一行是空白,F1等。
解决这个问题的唯一方法是使用interop删除空白行,然后通过OLEDB查询或通过互操作解析整个表。