You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用OpenCSV写入含逗号的CSV字段格式异常问题咨询

OpenCSV生成含逗号字段CSV解析异常问题解决方案

根因分析

问题出在CSVWriter构造参数中指定了ICSVWriter.NO_QUOTE_CHARACTER:

  • 该配置会强制OpenCSV不对任何字段添加包裹引号,遇到字段内包含分隔符(逗号)的场景时,只能依赖转义字符处理
  • Excel默认解析CSV规则不识别该场景下的转义逻辑,会误把字段内部的逗号识别为列分隔符,最终出现字段拆分错误、逗号丢失、多余引号的异常表现

修复方案

将构造参数中的引号配置改为默认的双引号即可,OpenCSV会自动给包含逗号、换行、特殊字符的字段添加双引号包裹,Excel解析时会自动把包裹用的双引号识别为格式标记,不会显示在单元格内容中,字段内的逗号也会正常保留。

修改后的代码如下:

try (Writer fileWriter = Files.newBufferedWriter(Paths.get(filePath))) {
      CSVWriter csvWriter =
          new CSVWriter(
              fileWriter,
              ICSVWriter.DEFAULT_SEPARATOR,
              // 把原来的NO_QUOTE_CHARACTER替换为默认引号字符
              ICSVWriter.DEFAULT_QUOTE_CHARACTER,
              ICSVWriter.DEFAULT_ESCAPE_CHARACTER,
              ICSVWriter.DEFAULT_LINE_END);
      csvWriter.writeNext(headers);
      csvWriter.writeAll(rows);
    } catch (IOException e) {
      throw new IOException(e);
    }

效果验证

修改后写入["field, 1", "field, 2", "field, 3"]时,生成的CSV原始内容为:

"field, 1","field, 2","field, 3"

用Excel打开后会分为3个独立列,单元格内容分别为field, 1、field, 2、field, 3,无多余引号,逗号正常展示,符合预期。

内容的提问来源于stack exchange,提问作者nerdlyist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:48:01