我尝试检索整个Excel表格。一切似乎都没问题但是当我把一个或多个空行放到工作表的开头时,他们不会被OleDbAdapter读取。不幸的是我需要它们,因为用户告诉我(程序)必须读取哪些行。
因此,当用户说,第2行和第3行必须被读取并且他在开始时插入一个空行我的程序将错过数据,因为没有读取第一行。
这是我创建连接字符串的方式,具体取决于它是xls还是xlsx文件以及ACE是否可用:
XLS,ACE可用
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"" + file + "\";Mode=Read Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;ImportMixedTypes=Text\""
XLS,ACE不可用
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + file + "\";Mode=Read;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;ImportMixedTypes=Text\""
XLSX,ACE需要可用(XLSM,XLSB相同)
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"" + file + "\";Mode=Read;Extended Properties=\"Excel 12.0 Xml;HDR=No;IMEX=1;ImportMixedTypes=Text\""
这是我的选择:
string select = "SELECT * FROM [" + sheet + "$]";
这就是我检索数据的方式:
OleDbDataAdapter adapter = new OleDbDataAdapter(select, connectionString);
DataTable dt = new DataTable(sheet);
adapter.Fill(dt);
int rowCount = dt.Rows.Count;
int columnCount = dt.Columns.Count;
修改:Here其他人也遇到了同样的问题但我没有看到与我的代码存在差异,而且我没有得到空行。
所以我的问题再次出现:我如何在开头阅读空行?