使用LinqToExcel套件 Excel某欄位內容如果過多遭截斷

  • 424
  • 0
  • 2018-08-23

因為Jet OLEDB provider在決定某欄位的型態時

預設是 前8列 是否有超過255字元,決定是為Text或是為Memo型態。

假設最前面8列都沒有超過255字元 型態為Text 之後此欄位列的內容 如果超過255字元都會被截斷。

解決方法

可以透過修改機碼TypeGuessRows  預設為8(列)

參考的機碼路徑為 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel] (直接搜尋TypeGuessRows)

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

https://support.microsoft.com/zh-tw/kb/281517