1

在尝试使用库 LinqToExcel 时,我注意到了一些有趣的事情。

 var factory = new ExcelQueryFactory(@"TestData\myFile.xlsx");

 var model = categoryHandler.GetCategoryTree(factory.Worksheet<MyRow>("WorkSheetName").ToList());

我使用上面的代码将我的 excel 工作表的行解析为一个名为 MyRow 的对象。该对象在 Excel 工作表中的每一列都有一个属性。但是,我注意到该库将忽略我的列中的混合字符串和数字内容。这意味着如果该列在第一行中有数字内容,它将忽略/跳过后续行中的任何非数字内容。似乎该库检查了第一行并假定该文件的其余部分采用该格式。这些单元格都被格式化为通用格式,但可能包含数字或常规字符串。

这是预期的行为吗?

4

1 回答 1

4

该问题与 LinqToExcel 使用的 OLEDB 提供程序有关。

这是一个解释该问题的堆栈溢出问题:Excel cell-values are truncated by OLEDB-provider

文章解释说添加 HDR=YES 有助于解决问题,并且 LinqToExcel 已经设置了该属性。

所以基本上你需要在前 8 行或 16 行中有一个字母数字的房间号。否则 OLEDB 将该列中的所有值视为数字而不是字符串。

于 2014-03-03T16:24:04.140 回答