2013-08-17 67 views
0

空白單元格我有以下數據表:除去從數據表

enter image description here

在PIC中所示,有在該數據表中的一些空白單元。

我想刪除它們並只顯示帶有值的單元格。

我嘗試下面的代碼,但它沒有工作:

For i=0 to dt.Rows.count-1 

For j=0 to dt.Column.count-1 


if dt.rows(i).tostring()="" then 

dt.rows.remove(i) 

end if 

next 

Next 

此代碼不工作。請幫幫我。

在C#中的答案也可以幫助我。

+0

你講什麼語言?? c#或VB.net? – AminM

+0

我的語言是vb,但ans與c#也可以幫助我 –

+0

這裏的空白單元格來自?你怎麼填滿你的桌子? – AminM

回答

2

理想情況下,您只想在所有單元格都爲空時刪除一行。即使單個單元格爲空,您顯示的算法也會刪除該行。你應該改變你的代碼是這樣的:

首先刪除空行:

For i = 0 To dt.Rows.Count - 1 
    flag = True 

    For j = 0 To dt.Columns.Count - 1 
     If Not(dt.Rows(i).IsNull(j)) AndAlso dt.Rows(i)(j).ToString() <> "" Then 
      flag = False 
      Exit For 
     End If 
    Next 

    If flag Then dt.Rows(i).Delete() 
Next 

dt.AcceptChanges() 

現在刪除空列:

For i = 0 To dt.Columns.Count - 1 
    flag = True 

    For j = 0 To dt.Rows.Count - 1 
     If Not(dt.Rows(j).IsNull(i)) AndAlso dt.Rows(j)(i).ToString() <> "" Then 
      flag = False 
      Exit For 
     End If 
    Next 

    If flag Then dt.Columns.RemoveAt(i) 
Next 

dt.AcceptChanges() 
+0

這將刪除頂部的空行,但不是列。 –

+0

@ FarhanMukadam:更新了我的答案。 – dotNET

1

你最好先刪除列:

dt.Columns.OfType<DataColumn>() 
      .Where(c=>!dt.Rows.OfType<DataRow>() 
          .Any(r=>r.Field<string>(c.ColumnName) != "")) 
      .ToList() 
      .ForEach(c=>dt.Columns.Remove(c)); 

//Remove rows 
dt.Rows.OfType<DataRow>() 
     .Where(r=>!dt.Columns.OfType<DataColumn>() 
          .Any(c=>r.Field<string>(c.ColumnName) != "")) 
     .ToList() 
     .ForEach(r=>dt.Rows.Remove(r));