从Excel读取时如何计算空行

我正在使用OLEDB连接并读取Excel电子表格中的数据。 我有IMEX =“1”,一切正常。 我的问题是我正在阅读的床单可能从几个空行开始,空行的数量是重要的。 例如,如果我正在阅读一个5×5的网格,如:

- - - - - - - - - - 2 - 3 3 8 - - - - - - - 5 2 2 

其中' – '代表一个空单元格。 前两行是空的事实很重要。 网格的大小是dynamic的。 我的代码似乎忽略了第一个空行。 但处理第4行的空行。

如何计算使用OLEDB的Excel工作表的开始处的空行数?

我限制使用OLEDB,我不会,如果我不必;-)

 using (var adapter = new OleDbDataAdapter("SELECT * FROM [" + worksheetName + "]", connString)) { var ds = new DataSet(); adapter.Fill(ds, "FareChart"); table = ds.Tables["FareChart"]; } 

连接string:

 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Windows\\TEMP\\e1842f90-74a7-42f2-a6fa-208396a1072e;Extended Properties=\"Excel 8.0;IMEX=1;HDR=No\"" 

UPDATE

在连接string中指定'.xls'作为文件扩展名解决了此问题,并在开始时正确读取空行。

我认为你的问题是你的连接string。 我testing了下面的代码,它为我工作:

  DataSet Contents = new DataSet(); using (OleDbDataAdapter adapter = new OleDbDataAdapter("select FirstName,LastName,Email,Mobile from [" + mySheet + "]", connection)) { adapter.Fill(Contents,"MyTable"); } foreach (DataRow content in Contents.Tables["MyTable"].Rows) { if (content[0].ToString() == "" && content[0].ToString() == "" && content[0].ToString() == "" && content[0].ToString() == "") { Console.WriteLine("Empty Row"); } else { Console.WriteLine(content[0] + " | " + content[1] + " | " + content[2] + " | " + content[3]); } } 

我的连接string是:

  string cnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\Untitled 1.xls\";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; 

检查下面的代码:它将返回空行

 System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source = " + strFileName + "; Extended Properties = \"Excel 8.0;HDR=NO;IMEX=1\";"); /*for office 2007 connection*/ conn.Open(); string strQuery = "SELECT * FROM [" + Table + "]"; System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); System.Data.DataTable ExcelToDataTable = new System.Data.DataTable(); adapter.Fill(ExcelToDataTable); DT = ExcelToDataTable.Copy(); int count = DT.Rows.Cast<DataRow>().Where(row => row.ItemArray.All(field => field is System.DBNull || string.Compare((field as string).Trim(), string.Empty) == 0)).ToList().Count(); 

如@Knvn所述

您需要在连接string中指定文件扩展名为.xls的文件名。