我有以下数据表:
如图所示,该数据表中有一些空白单元格。
我想删除它们并只显示具有值的单元格。
我尝试了以下代码,但没有奏效:
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#中的答案也可以帮助我。
我有以下数据表:
如图所示,该数据表中有一些空白单元格。
我想删除它们并只显示具有值的单元格。
我尝试了以下代码,但没有奏效:
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#中的答案也可以帮助我。
理想情况下,您只想在所有单元格为空时删除一行。即使其中的单个单元格为空,您显示的算法也会删除该行。您应该像这样更改代码:
首先删除空行:
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()
您最好先删除列:
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));