csvファイルをデータテーブルにインポートしますが、残念ながら、数値を含む列でもデータを文字列列に入れます。
したがって、いくつかの列の形式を (他の方法がない限り) datetime、integer、または double に変換する必要があるため、次のコードを記述しました。
Public Sub ChangeFieldType(ByRef dataTable As DataTable, ByVal fieldIndex As Integer, ByVal newType As Type)
Dim newDataTable As DataTable = dataTable.Clone
newDataTable.Columns(fieldIndex).DataType = newType
For Each row As DataRow In dataTable.Rows
newDataTable.ImportRow(row)
Next
dataTable = newDataTable
End Sub
ただし、文字列形式が vbnullstring の空のセルがいくつかあります。私の質問は、私のコードよりも簡単な方法があるかどうかです。そうでない場合は、空のセルを変換するよりも速い方法があります。
Public Sub ChangeFieldType(ByRef dataTable As DataTable, ByVal fieldIndex As Integer, ByVal newType As Type)
Dim newDataTable As DataTable = dataTable.Clone
newDataTable.Columns(fieldIndex).DataType = newType
For Each row As DataRow In dataTable.Rows
If row(fieldIndex) = vbNullString Then
row(fieldIndex) = Nothing
End If
newDataTable.ImportRow(row)
Next
dataTable = newDataTable
End Sub
これは非常に遅いためです。
ありがとう