推荐使用OpenCSV库将List写入CSV文件,它自动处理逗号、换行符和双引号转义;纯Java方式需手动实现escape逻辑并注意UTF-8编码与异常处理。

Java 将 List 数据写入 CSV 文件,核心是把每条记录按逗号分隔、换行写入文本文件,并注意处理字段中的逗号、换行符和双引号等特殊字符。推荐用 OpenCSV 库(简单可靠),也可用纯 Java(适合简单场景,但需手动转义)。
用 OpenCSV 写入 List 到 CSV(推荐)
OpenCSV 自动处理引号包裹、字段内换行、逗号转义等细节,避免格式错乱。
- 添加 Maven 依赖:
com.opencsv
opencsv
5.7.1 - 假设 List 是
List或自定义对象(支持注解映射): - 写入示例(以 String[] 为例):
try (CSVWriter writer = new CSVWriter(new FileWriter("data.csv"))) {
writer.writeNext(new String[]{"姓名", "年龄", "城市"}); // 表头
writer.writeNext(new String[]{"张三", "25", "北京"});
writer.writeNext(new String[]{"李四", "30", "上海,浦东"}); // 含逗号,自动加引号
writer.writeNext(new String[]{"王五", "28", "广州\n天河"}); // 含换行,也自动处理
}
用纯 Java 写入(无第三方库)
适合轻量需求,但必须手动转义:字段含 ,、" 或换行符时,需用双引号包裹,且内部双引号要替换成两个双引号(CSV 标准)。
把记录数组导出为带样式的 Excel(xlsx) 或带 BOM 的 CSV。支持列配置(表头/宽度/顺序)、表头冻结首行、斑马纹、布尔值转「是/否」、数组换行、CSV 中文防乱码。零依赖。触发词:导出 Excel、导出 CSV、记录转表格、列配置导出、数据导出、表格美化、JSON 转表格。
- 逐行拼接字符串,用
FileWriter写入: - 关键逻辑:对每个字段调用转义方法:
private static String escapeCsvField(String field) {
if (field == null) return "";
if (field.contains(",") || field.contains("\"") || field.contains("\n")) {
return "\"" + field.replace("\"", "\"\"") + "\"";
}
return field;
}
再遍历 List,拼接每行:String line = Arrays.stream(row).map(this::escapeCsvField).collect(Collectors.joining(","));
写入对象列表(如 List)
OpenCSV 支持通过 @CsvBindByName 注解或 ColumnPositionMappingStrategy 映射字段。
- 给 User 类字段加注解:
- @CsvBindByName(column = "name") private String name;
- 创建
StatefulBeanToCsv实例并写入: - StatefulBeanToCsv
beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
beanToCsv.write(userList);
注意事项
- 编码统一用 UTF-8,防止中文乱码:
new FileWriter("file.csv", StandardCharsets.UTF_8) - 确保目录可写,捕获
IOException - 大数据量时建议用
BufferedWriter包装 FileWriter 提升性能 - 不要直接用
println拼接,容易因未转义导致 Excel 打开错列
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










