Open XiaoSuWorld opened 1 year ago
+1,只要csv的数据本身包含英文引号就会报错,这个错还无法通过转义规避,英文在获取文件流之前就报错了
本质是apache的csvformat的问题 尝试withQuote(null) 看能不能解决
同在找这个解决方法,重写的代价太大了,加上以后jar包升级会很麻烦
这个问题我也遇到了 你解决了吗
同样的问题,在解析csv文件的时候:Error: Invalid char between encapsulated token and delimiter. Token Content:xxx Line: [67250,12907664]
情况1:如果csv行数据中有的一个单元格数据是"xx1,xx2",解决方案如下:CsvReadWorkbookHolder 手动setCSVFormat为CSVFormat.DEFAULT.withQuote('\"')
,apache中withQuote是设置quoteCharater,quoteCharacter为",就会认为被"包裹起来的数据为一个单元格数据。
情况2:如果csv行数据中数据格式是"xxx1";"xxx2",用如上配置就会报错 invalid char between encapsulated token and delimiter,因为解析行数的格式有问题,解决方案:可以将setCSVFormat为CSVFormat.DEFAULT.withQuote(null)
,但这样会出现的问题是会把情况1解析成多个列,造成解析出来的列比实际多。
折腾了一下午,最终选择了情况2的解决方案,解析后再手动合并列。
异常代码
EasyExcel.read(file, new ElasticSearchDataListenerParkMobile().excelType(ExcelTypeEnum.CSV).charset(Charset.forName("UTF-8")).sheet().doRead();
异常提示
问题描述
封装令牌和分隔符之间的字符无效,解析 CSV 文件时出现以下错误。
样例数据
33857,"","","Tyler","Freiheit","","","7036630991","tyfreiheit@gmail.com","tyfree","$2a$05$dOQc3FPlX4yGDgKpe2QTquApTCzfcZtX7iE3l9TJFUvhZy3QEkAY.","","","PayByPhone40","","","","YBA9878,XLU1669,JVB7162,HFR1101,XDS1022,XBS1950,UVK7247,WMP6146,G60557,VGS3099,VLB7751",",,,,,,Jenni,Jenni,,Jeep,Honda "