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

问题描述 投票:0回答:2

我在 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:?]

我尝试了互联网上的多个帖子,但没有成功。

有人可以在这里指出这个问题吗?

spring-boot opencsv
2个回答
0
投票

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


0
投票

我也遇到了同样的问题,我发现这是由于文本值中间的引号“造成的。 例如:“16” OD376.5 X 12.5mm 和 OD 373 X 12.5mm(RDX) 的拉力计算” 删除或转义它对我来说没有任何问题。

根据您的情况,请通过删除或转义这些字符来进行检查。希望它对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.