Dot-Net
Excel 單元格值被 OLEDB-provider 截斷
我正在使用 OleDbConnection 類從 Excel 2000/2003 工作簿中檢索數據:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;IMEX=1\";"; OleDbConnection connection = new OleDbConnection(connectionString); connection.Open(); // code to get table name from schema omitted var dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", name),connection); var myDataSet = new DataSet(); dataAdapter.Fill(myDataSet, "ExcelInfo");現在事實證明,工作表中長度大於 255 個字元的單元格將被截斷。這是 Microsoft.Jet.OLEDB 提供程序的限制,還是我可以做些什麼?
任何人?
Excel 的 OLEDB 提供程序將嘗試根據前 8 行數據自動確定 DataTypes,這可以使用連接字元串中的 HDR=Yes/No 屬性進行設置。此外,還有多種類型可以應用於文本列。備忘錄類型包含超過 255 個字元,因此如果前 8 行都沒有,那麼它將錯誤地設置數據類型。
更改此設置的方法是更改名為 TypeGuessRows 的系統資料庫設置,如下所述:Microsoft Support
注意:TypeGuessRows 鍵的有效值範圍是 0 到 16。但是,如果值為 0,則掃描的源行數為 16384。因此,如果您有一個非常大的文件,請確保最大的行在前。