我在 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"
最后一个数据列之后没有换行符。
这是我的函数,它返回数据的迭代器
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) 的拉力计算” 删除或转义它对我来说没有任何问题。
根据您的情况,请通过删除或转义这些字符来进行检查。希望它对你有用。