我使用以下代码将CSV文件中的数据导入数据表: 当我运行我的应用程序时,我收到以下错误:输入字符串格式不正确。无法存储<>在PLANTJAAR专栏。预期类型是Int32。 这发生在倒数第二行:datatabel.Rows.Add(parser.ReadFields())
Dim datatabel As New DataTable()
datatabel.Columns.Add(New DataColumn("LIDNOMMER", GetType(String)))
datatabel.Columns.Add(New DataColumn("LIDNAAM", GetType(String)))
datatabel.Columns.Add(New DataColumn("PLAASNOMMER", GetType(String)))
datatabel.Columns.Add(New DataColumn("PLAASNAAM", GetType(String)))
datatabel.Columns.Add(New DataColumn("BLOKNO", GetType(String)))
datatabel.Columns.Add(New DataColumn("AREA", GetType(String)))
datatabel.Columns.Add(New DataColumn("KLAS", GetType(String)))
datatabel.Columns.Add(New DataColumn("GROND", GetType(String)))
datatabel.Columns.Add(New DataColumn("BESPROEI", GetType(String)))
datatabel.Columns.Add(New DataColumn("PLANTJAAR", GetType(Int32)))
datatabel.Columns.Add(New DataColumn("STADIUM", GetType(String)))
datatabel.Columns.Add(New DataColumn("ONDERSTOK", GetType(String)))
datatabel.Columns.Add(New DataColumn("KULTIVAR", GetType(String)))
datatabel.Columns.Add(New DataColumn("OPP", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("ALIAS", GetType(String)))
datatabel.Columns.Add(New DataColumn("ALIASNAAM", GetType(String)))
datatabel.Columns.Add(New DataColumn("KONTAK1", GetType(String)))
datatabel.Columns.Add(New DataColumn("KONTAK2", GetType(String)))
datatabel.Columns.Add(New DataColumn("KLAAR_EZY", GetType(String)))
datatabel.Columns.Add(New DataColumn("MASJIEN", GetType(String)))
datatabel.Columns.Add(New DataColumn("PROD_GROEP", GetType(String)))
datatabel.Columns.Add(New DataColumn("E_POS_DOC", GetType(String)))
datatabel.Columns.Add(New DataColumn("E_POS_HAR", GetType(String)))
datatabel.Columns.Add(New DataColumn("E_POS_REM", GetType(String)))
datatabel.Columns.Add(New DataColumn("DOELWIT", GetType(String)))
datatabel.Columns.Add(New DataColumn("OESMETODE", GetType(String)))
datatabel.Columns.Add(New DataColumn("SNOEIMETODE", GetType(String)))
datatabel.Columns.Add(New DataColumn("TON_MIN5", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_MIN4", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_MIN3", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_MIN2", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_MIN1", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_HUIDIG", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TONHA_MIN5", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TONHA_MIN4", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TONHA_MIN3", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TONHA_MIN2", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TONHA_MIN1", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TONHA_HUIDIG", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_SKAT_HAND", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_SKAT_MASJIEN", GetType(Decimal)))
datatabel.Columns.Add(New DataColumn("TON_SKAT_TOTAAL", GetType(Decimal)))
Dim parser As New FileIO.TextFieldParser("C:\Users\Administrator\Desktop\SKEDULERING\EZY Wine Data\skedp_01.csv")
parser.Delimiters = New String() {","}
parser.HasFieldsEnclosedInQuotes = True
parser.TrimWhiteSpace = True
parser.ReadLine()
Do Until parser.EndOfData = True
datatabel.Rows.Add(parser.ReadFields())
Loop
我在CSV文件的列plantjaar中没有空行。
非常感谢任何帮助。
编辑:我的CSV文件:
答案 0 :(得分:0)
您可以像以下
一样定义PLANTJAAR列datatabel.Columns.Add(New DataColumn("PLANTJAAR", GetType(Int32)))
Int32表示没有小数位的数字可以存储在该列中。
我的猜测是你的CSV文件中有某种形式的字符串或带小数位的数字。
答案 1 :(得分:0)
我的建议是检查您需要的字段。
在这种情况下,如果它不是int32,则将其设置为0.理想情况下,您应该检查所有字段。
Do Until parser.EndOfData = True
Dim fields() as String = parser.ReadFields()
Dim checkIndex as Integer = 9 ' Index of PLANTJAAR Field
Dim checkNum as Integer = 0
If Not Int32.TryParse(fields(checkIndex), checkNum) Then
fields(9) = "0"
End If
datatabel.Rows.Add(fields)
Loop