OpenCsv面临问题:数据字段的数量与标头的数量不匹配



我在springboot项目中使用OpenCSV 4.2,并试图解析一个包含1个数据行的CSV文件。

col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17
"1234","VSHRT","TTRYE","PLRTY","1165","NOW","","Collection","store/WEZXB6Z2CC_1.jpg","500","ABC","false","0","[{""name"":""fdtty"",""id"":""242541"",""value"":10}]","400","ABC","dummycol"

最后一个数据列后没有换行符。

这是我的函数,它为数据返回Iterator

public static <T> Iterator<T> csvToBeanIterator(String csv, Class<T> clazz) {
CsvToBean cb = new CsvToBeanBuilder<>(new StringReader(csv))
.withType(clazz)
.withSeparator(",")
.build();
return cb.iterator();
}

我收到错误

Caused by: com.opencsv.exceptions.CsvRequiredFieldEmptyException: Number of data fields does not match number of headers.
at com.opencsv.bean.HeaderColumnNameMappingStrategy.verifyLineLength(HeaderColumnNameMappingStrategy.java:105) ~[opencsv-4.2.jar:?]
at com.opencsv.bean.AbstractMappingStrategy.populateNewBean(AbstractMappingStrategy.java:313) ~[opencsv-4.2.jar:?]
at com.opencsv.bean.concurrent.ProcessCsvLine.processLine(ProcessCsvLine.java:116) ~[opencsv-4.2.jar:?]
at com.opencsv.bean.concurrent.ProcessCsvLine.run(ProcessCsvLine.java:77) ~[opencsv-4.2.jar:?]

我在网上试过很多帖子,但没有成功。

有人能在这里指出问题吗。

我遇到了同样的问题,删除了一些列为我排序。

我也遇到了同样的问题,我发现这是由于引号"在文本值的中间。例如:";16〃的拉力计算;OD376.5 X 12.5mm;OD 373 X 12.5mm(RDX(";移除或逃离它对我来说很有效,没有任何问题。

在您的情况下,请删除或转义这些字符进行检查。希望对你有用。

相关内容

  • 没有找到相关文章

最新更新