2017-08-11 39 views
-1

我读excel但dataGridView显示数据比行Excel文件,所以我不能写datagridview.Rowcount()。我使用下面给出的代码来读取excel文件。错误,当我读取excel文件由C#

代码:

filePath = txtExcelFile.Text; 
string[] fileSpit = filePath.Split('.'); 
if (filePath.Length > 1 && fileSpit[1] == "xls") 
{ 
    connString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=No'"; 
} 
else 
{ 
    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=No'"; 
} 
OleDbCommand cmd = new OleDbCommand(@"Select * from [" +comboBox1.SelectedValue.ToString() + "]", ole); 
OleDbDataAdapter oledata = new OleDbDataAdapter(); 
oledata.SelectCommand = cmd; 
DataSet ds = new DataSet(); 
oledata.Fill(ds); 
dataGridView1.DataSource = ds.Tables[0].DefaultView; 
+0

它不是很清楚,你能否澄清你想要做的?猜测要做一个'datagridview.Rowcount()',但空行影响结果? –

+0

是的,我想行数dataGridView但空行是不正确的结果。 –

+0

我们如何回答这个问题而不能复制您的问题?您的代码中没有任何内容对我来说看起来不对。你需要为我们提供[mcve]。 – Enigmativity

回答

0

要么将​​其分配给电网剥离之前从数据表中的空行:

private DataTable StripEmptyRows(DataTable dt) 
    { 
     List<int> rowIndexesToBeDeleted = new List<int>(); 
     int indexCount = 0; 
     foreach(var row in dt.Rows) 
     { 
      var r = (DataRow)row; 
      int emptyCount = 0; 
      int itemArrayCount = r.ItemArray.Length; 
      foreach(var i in r.ItemArray) if(string.IsNullOrWhiteSpace (i.ToString())) emptyCount++; 

      if(emptyCount == itemArrayCount) rowIndexesToBeDeleted.Add(indexCount); 

      indexCount++; 
     } 

     int count = 0; 
     foreach(var i in rowIndexesToBeDeleted) 
     { 
      dt.Rows.RemoveAt(i-count); 
      count++; 
     } 

     return dt; 
    } 

或者做自己的行数忽略空行。

+0

是的,它很好。非常感谢Jeremy @@ –