2014-03-03 34 views
1

當我嘗試使用庫LinqToExcel時,發現了一些有趣的事情。Linq to Excel無法解析混合字符串和數字內容

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

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

我使用上面的代碼來分析我的Excel工作表中的行到一個名爲MyRow的對象中。該對象在Excel表中每列有一個屬性。但是,我注意到的是,庫將忽略列中的混合字符串和數字內容。這意味着如果列在第一行中包含數字內容,它將忽略/跳過後續行中的任何非數字內容。它看起來好像圖書館檢查第一行並假定文件其餘部分的格式。 單元格全部格式化爲通用,但可能包含數字或常規字符串。

這是預期的行爲?

+0

如果您有權訪問「xlsx」,請參閱如果將列的格式更改爲「文本」,會發生什麼情況。 – RyanCJI

回答

4

該問題與LinqToExcel使用的OLEDB提供程序有關。

這裏有一個堆棧溢出的問題,解釋問題:Excel cell-values are truncated by OLEDB-provider

文章解釋說,加入HDR = YES的問題有所幫助,並LinqToExcel已經設置該屬性。

所以基本上你需要在前8或16行有一個字母數字房間號碼。否則OLEDB將該列中的所有值視爲數字而不是字符串。