【发布时间】:2011-09-06 09:25:12
【问题描述】:
我正在使用 OLEDB 连接和读取 Excel 电子表格中的数据。我有 IMEX="1" 一切正常。我的问题是我正在阅读的工作表可能从几行空行开始,空行数很重要。例如,如果我正在阅读 5x5 网格,例如:
- - - - -
- - - - -
2 - 3 3 8
- - - - -
- - 5 2 2
其中“-”代表一个空单元格。前两行是空的这一事实很重要。网格的大小是动态的。我的代码似乎忽略了第一个空行。但是处理第 4 行的空行没问题。
如何使用 OLEDB 计算 Excel 工作表开头的空行数?
我被限制使用 OLEDB,如果我不需要的话我不会;-)
using (var adapter = new OleDbDataAdapter("SELECT * FROM [" + worksheetName + "]", connString)) {
var ds = new DataSet();
adapter.Fill(ds, "FareChart");
table = ds.Tables["FareChart"];
}
连接字符串:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Windows\\TEMP\\e1842f90-74a7-42f2-a6fa-208396a1072e;Extended Properties=\"Excel 8.0;IMEX=1;HDR=No\""
更新
在连接字符串中指定“.xls”作为文件扩展名解决了这个问题,并在开始时正确读取了空行。
【问题讨论】:
-
另外,不能使用“-”或“0”来表示空单元格,单元格必须为空。数据实际上比我给出的示例更复杂,我们无法控制格式。
-
不确定这是否有帮助:stackoverflow.com/questions/1138197/…
-
你的
ConnectionString是什么? -
在您的
connectionString中,您需要指定带有扩展名的excel 文件名。喜欢:myExlFileName.xls -
@Knvn 原因是连接字符串中缺少“.xls”。