c#从xls文件中读取 - 数据集中缺少的日期和数字

时间:2014-05-06 11:19:37

标签: c# excel

当使用以下代码读取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,但是在数据集中根本没有返回任何数据。

由于

1 个答案:

答案 0 :(得分:2)

如果要将列标题读入结果集(使用HDR = NO,即使有标题)且列数据为数字,请使用IMEX = 1以避免崩溃。

总是使用IMEX = 1是一种更安全的方法来检索混合数据列的数据。

http://www.connectionstrings.com/excel/