我在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(";移除或逃离它对我来说很有效,没有任何问题。
在您的情况下,请删除或转义这些字符进行检查。希望对你有用。