2011-09-06 62 views
3

我在C#连接中使用OleDb从Excel工作表读取数据。并将其填入Datatable。OleDb连接不读取excel文件中的所有行

该工作表包含275行和27列。读完之后,1,2和3行是空的。所有其他行都被正确填充。

任何人有关于这个问题的想法?

这里是我的代码:

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
       "Data Source=" + "C:/Sheets/DataSheet.xls" + ";Extended Properties=Excel 12.0;"; 

objConn = new OleDbConnection(connString); 

string Query = "SELECT * FROM [Sheet1$]"; 
OleDbCommand objCmd = new OleDbCommand(Query, objConn); 

DataTable Table = new DataTable(); 
objAdapter1.SelectCommand = objCmd; 
objAdapter1.Fill(Table); 
+0

即使我遇到了这样的问题。你可以参考:http://stackoverflow.com/questions/6913497/unknown-problem-while-exporting-excel-to-system-datatable和http://stackoverflow.com/questions/1941083/problems-reading-in- excel-file-in-c也是这个http://stackoverflow.com/questions/6913497/unknown-problem-while-exporting-excel-to-system-datatable确保你的连接是正确的http:// www。 connectionstrings.com/excel – Pratik

回答

4

问题是我的工作表包含混合数据,它只是读取数字。 解决的办法是指定

Properties=\"Excel 12.0;IMEX=1\";" 

IMEX = 1让读者导入并不是所有的数据只有数字

1

This post具有第一行的一些信息被当作标题,除非你指定的连接字符串中HDR=NO

我不知道为什么第二行和第三行可能会跳过;你可以看到它们的内容有什么不同吗?

+0

谢谢你的回答。但我知道第一行是一个标题,并没有把它计算在内。它会正确填写标题,但接下来的3行没有填充。没有,他们的内容没有任何区别 – Youssef

0

我刚添加了新行上排它出现在数据集。所以在我的情况下,排令更改解决问题