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

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

(问题1)

我需要获取用户上传的excel表的列名。 我的连接string为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的特定范围中select数据。 说像从第3行到第12行的数据。所以我用这样的查询,

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

但它抛出exception,像这样的消息“没有给出一个或多个所需参数的值”。

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

如果是的话可以任何人请告诉如何纠正查询?

问题1不能通过OLEDB解决,Excel不是一个数据库,只能使用第一行作为列名,或者如果第一行是空白,F1等。

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