2013-08-21 48 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让读者能够导入所有数据不仅数量。