Excelスプレッドシートを解析し、結果全体をDataTableとして返しました。ただし、このExcelスプレッドシートには、結果のDataTableから削除したい空の行がいくつかあります。特に、各空の行は空のセルで始まります。したがって、最初のインデックスのセルの値が空の場合、行全体が空であることがわかります。クライアントから送信されたものを正確に処理する必要があるため、Excelスプレッドシートを単純に変更することはできないことに注意してください。この情報に基づいて、次の関数を実行して空の行を削除できると思いました。
' DataTable dt has already been populated with the data
For Each row As DataRow In dt.Rows
If dt.Rows.Item(0).ToString = "" Then
dt.Rows.Remove(row)
ElseIf dt.Rows.Item(0) Is Nothing Then
dt.Rows.Remove(row)
End If
Next
ただし、このソリューションを作成した後、次のエラーが表示されます。
Collection was modified; enumeration operation might not execute.
コレクションにアクセスするときに、コレクションを変更できないことに気付きました。どうすればこれを回避できますか?空ではない行を使用して新しいDataTableを作成する必要があるかどうか疑問に思っています。これが最善のアプローチですか、それともより良いオプションがありますか?
編集:私はまた、行を逆方向に反復しようとしました:
For i = dt.Rows.Count() - 1 To 0
If dt.Rows.Item(i).Item(0).ToString = "" Then
dt.Rows.RemoveAt(i)
End If
Next