因為Jet OLEDB provider在決定某欄位的型態時
預設是 前8列 是否有超過255字元,決定是為Text或是為Memo型態。
假設最前面8列都沒有超過255字元 型態為Text 之後此欄位列的內容 如果超過255字元都會被截斷。
解決方法
可以透過修改機碼TypeGuessRows 預設為8(列)
參考的機碼路徑為 [HKEY_LOCAL_MACHINE\SOFTWARE\
TypeGuessRows可設定範圍為0~16,修改為0時,掃描的rows為16384。
模擬問題產生
下方為Excel的內容,商品資訊(B) 欄位,Excel第10列的商品資訊內容,
在轉成myList 時候,Excel第10列的商品資訊字串內容被截斷。
List<ToView> myList = newFile.Worksheet<ToView>(sheetName).ToList();
把Excel的第9列的商品資訊內容換成較長的字串(超過255字元)。
神奇的是Excel第10列的商品資訊字串內容正常了。
參考文章
https://groups.google.com/forum/#!topic/linqtoexcel/PckqmAVW56w