使用Spring Batch批量导入Excel XLSX数据到数据库遇FlatFileParseException如何解决
问题根源
你当前的解析逻辑存在核心错误,和XLSX文件格式、文件内特殊字符无关:
FlatFileItemReader是Spring Batch提供的纯文本平面文件读取器,仅支持CSV、TXT这类按行存储的纯文本格式。XLSX是二进制压缩格式的Excel文件,完全无法被该读取器解析,你报错里的乱码就是XLSX二进制内容被强制当作文本读取的结果。
解决方法
有两种可行方案:
方案1:将XLSX转成CSV格式使用现有配置
将你的BulkData.xlsx文件另存为UTF-8编码的CSV格式文件,修改读取资源路径为CSV文件即可,无需修改其他代码:
reader.setResource(new ClassPathResource("BulkData.csv"));
注意CSV的列分隔符要和DelimitedLineTokenizer的默认分隔符(逗号)匹配,如果你用了其他分隔符需要手动调用setDelimiter方法指定。
方案2:替换为支持XLSX格式的ItemReader
如果必须直接读取XLSX文件,你需要自定义适配XLSX格式的ItemReader,可以基于Apache POI或者EasyExcel工具封装实现:
自定义Reader需要实现
ItemReader接口,逐行读取Excel sheet中的行数据,映射为User对象返回即可,无需使用原有的LineMapper、DelimitedLineTokenizer相关逻辑。
内容的提问来源于stack exchange,提问作者Bharat Chaudhari
相关产品推荐
相关产品推荐

