Java Commons-CSV无法正确解析Excel CSV文件表头问题咨询
问题分析与解决方案
核心原因
你遇到的问题根源很明确:默认的CSVFormat.EXCEL使用逗号(,)作为字段分隔符,但你的CSV文件实际是用分号(;)来分隔字段的。解析器找不到预期的逗号分隔符,就把整行表头当成了单个字段,最终导致getHeaderMap()只返回了那个拼接后的键。
修复方案
只需要在CSVFormat配置中显式指定分号作为分隔符即可,修改后的代码如下:
fileReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); csvParser = new CSVParser(fileReader, CSVFormat.EXCEL .withNullString("") .withFirstRecordAsHeader() .withIgnoreHeaderCase() .withQuoteMode(QuoteMode.MINIMAL) .withIgnoreEmptyLines() .withTrim() .withDelimiter(';')); // 新增该行指定分号为分隔符
添加.withDelimiter(';')后,解析器就能正确识别分号作为字段分隔符,将access_id和logicalgate拆分成两个独立的表头字段了。
实用小提示
如果以后再遇到类似的表头解析异常,可以先打印读取到的第一行原始内容,确认字段之间的分隔符类型,能更快定位问题。
内容的提问来源于stack exchange,提问作者Tobia
相关产品推荐
相关产品推荐

