【发布时间】:2012-05-14 05:15:54
【问题描述】:
我在 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].
但是它抛出了异常,像这样的消息“没有为一个或多个必需参数提供值。”
我的查询中有语法错误吗?
如果可以,谁能告诉我如何更正查询?
【问题讨论】:
-
我认为问题 2 可能是问题 1 的结果。不幸的是,这种与电子表格对话的方法只会使用它认为是数据范围的第一行来命名列。如果您对用户上传的电子表格的格式有任何控制权,我会将列标题移至第 1 行。否则,您必须将列名称为
F1、F2而不是Repname和 @987654327 @ -
嗨 Pynner,问题 2 不是问题 1 的结果。我通过在 select 语句中给出范围解决了问题 2,但我无法解决问题 1