Я импортирую файл csv в datatable, который, к сожалению, помещает мои данные в строковые столбцы, даже те с цифрами.Преобразование типа столбцов в datatable
Так что я должен преобразовать формат некоторых столбцов (если есть другой способ) в DateTime, целое число или два раза, почему я написал следующий код:
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
Потому что это очень-очень медленно.
Благодаря
Я пробовал ваше решение, но я получаю исключение литья во время импорта csvfile в datatable. Исключение говорит о том, что ожидаемым типом является Double вместо String. Мой код для импортирования следующий: 'Хотя csvCopy.ReadNextRecord() Dim csvRow As DataRow = datatable.NewRow Для я = 0 Для csvCopy.FieldCount - 1 csvRow (я) = csvCopy (I) Следующая DataTable .Rows.Add (csvRow) End While' И он зависает на 'csvRow (i) = csvCopy (i)' – Rave
Вы делаете это в точности как op в ссылке. Пожалуйста, используйте метод, показанный в ответе на этой странице – puneet
Спасибо, что он отлично работал – Rave