2013-08-21 50 views
2

嘿我正在使用DataAdapter來讀取一個Excel文件,並用這些數據填充數據表。OleDbDataAdapter沒有填滿所有的行

這是我的查詢和連接字符串。

private string Query = "SELECT * FROM Sheet1"; 
private string ConnectString = "Provider=Microsoft.ACE.OLEDB.12.0;" 
            + "Data Source=\"" + Location + "\";" 
            + "Extended Properties=\"Excel 12.0 Xml;HDR=YES\""; 

OleDbDataAdapter DBAddapter = new OleDbDataAdapter(Query, ConnectString); 
DataTable DBTable = new DataTable(); 
DBAddapter.Fill(DBTable); 

問題是我的excel文件有12000條記錄,但它只填充2502條記錄到我的數據表中。

數據適配器可以讀取和寫入數據表的數量有限制嗎?

+0

你確定'Sheet1'包含'12000'記錄嗎? 'DataTable'可能有一些限制,但並不那麼小。你可以用'Sheet1 $'替換'Sheet1'嗎? –

+0

我以爲你必須用「[...]」來包圍sheetname,當然還要添加$到像King King那樣的表單名稱 –

+0

這不是我在查詢中添加表單名稱的方式。它獲取正確的表名,因爲我正在獲取一些數據。我認爲是因爲我複製並將數據粘貼到excel文件中,它可能沒有格式化,以便oleDBAdapter可能讀取它。我在我的實際代碼中使用這樣的表名。 [ 「+ sheetNames [0] +」] – Mitch

回答

0

問題可能是該工作表會包含混合數據,並且只能讀取數字。解決的辦法是規定:

Properties="Excel 12.0;IMEX=1"; 

IMEX=1讓讀者能夠導入所有數據不僅數量。