当使用以下代码读取xls文件时,我没有得到任何包含日期或数字的单元格的内容。带有字符串数据的单元格返回正常。
var fileName = @"F:\excelfiles\3030497Testing.xls";
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [mainDetails$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "SWinv");
DataTable data = ds.Tables["SWinv"];
foreach( DataRow row in data.Rows)
{
Console.WriteLine(row[3]); // has string data
Console.WriteLine(row[11]); // has non-string data - EMPTY
}
当我用字符串替换列K(行[11])中的数据时,它输出这些。即使我交替行(字符串,非字符串没有),所以压缩版本将是:
column 3 | column 11 || output
hello row 1 | 9.5 || hello row 1
hello row 2 | b || hello row 2 b
hello row 3 | 21.1 || hello row 3
另外,当我查看调试器中的数据集时,应该包含它们的行中缺少数字,但是该行上有字符串“b”。
有人可以指出我正确的方向吗?
我也尝试了exceldatareader.codeplex.com,但是在数据集中根本没有返回任何数据。
由于
答案 0 :(得分:2)
如果要将列标题读入结果集(使用HDR = NO,即使有标题)且列数据为数字,请使用IMEX = 1以避免崩溃。
总是使用IMEX = 1是一种更安全的方法来检索混合数据列的数据。