2017-08-11 37 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 @@ –