Java导出CSV可手动拼接或用OpenCSV等库;手动需转义特殊字符并注意编码,OpenCSV自动处理引号、换行和UTF-8,推荐用于生产环境。

Java 中将数据导出为 CSV 文件,核心是按 CSV 格式(逗号分隔、双引号包裹含特殊字符的字段)拼接字符串,并写入文件。不依赖第三方库也能实现,但用 OpenCSV 或 Apache Commons CSV 更安全、简洁、健壮。
手动拼接 + FileWriter(适合简单场景)
适用于数据结构简单、无逗号/换行/双引号等特殊字符的情况。注意:需手动转义,否则 CSV 易损坏。
- 每个字段用英文逗号
,分隔 - 若字段含逗号、换行符或双引号,必须用双引号包裹,且内部双引号要转义为两个双引号(
"→"") - 整行写入后加换行符(
\n或System.lineSeparator())
示例(导出用户列表):
try (FileWriter writer = new FileWriter("users.csv")) {
// 写表头
writer.append("id,name,city\n");
// 写数据行(简单情况,未做转义)
writer.append("1,\"Zhang San\",\"Beijing\"\n");
writer.append("2,\"Li \"\"Two\"\",Shanghai\n"); // 名字含双引号,需转义
}
使用 OpenCSV(推荐,处理边界情况更可靠)
Maven 引入:
<dependency><groupid>com.opencsv</groupid><artifactid>opencsv</artifactid><version>5.7.1</version></dependency>
写入示例(自动处理引号、转义、换行):
try (CSVWriter writer = new CSVWriter(new FileWriter("users.csv"))) {
// 写表头
writer.writeNext(new String[]{"id", "name", "city"});
// 写数据行(自动转义)
writer.writeNext(new String[]{"1", "Zhang San", "Beijing"});
writer.writeNext(new String[]{"2", "Li \"Two\"", "Shang\nhai"}); // 换行也支持
}
写入对象列表(用 OpenCSV 的 BeanToCsv)
定义 Java Bean 并用 @CsvBindByName 注解字段:
public class User {
@CsvBindByName(column = "id")
private int id;
@CsvBindByName(column = "name")
private String name;
@CsvBindByName(column = "city")
private String city;
// 构造函数、getter/setter 省略
}
导出对象集合:
List<user> users = Arrays.asList(
new User(1, "Zhang San", "Beijing"),
new User(2, "Wang \"Five\"", "Guangzhou")
);
try (CSVWriter writer = new CSVWriter(new FileWriter("users.csv"))) {
StatefulBeanToCsv<user> beanWriter = new StatefulBeanToCsvBuilder<user>(writer)
.withQuotechar(CSVWriter.DEFAULT_QUOTE_CHARACTER)
.build();
beanWriter.write(users);
}</user></user></user>
注意事项与建议
- 中文导出时,务必指定文件编码(如
new OutputStreamWriter(new FileOutputStream(...), StandardCharsets.UTF_8)),避免乱码 - 大数据量时,避免一次性加载所有数据到内存;可用流式写入(OpenCSV 支持逐行写)
- 不要用 Excel 直接双击打开 UTF-8 CSV(可能乱码),建议用记事本另存为 ANSI,或用 WPS / Excel 通过“数据→从文本导入”并选 UTF-8 编码
- 生产环境优先选 OpenCSV 或 Apache Commons CSV,它们已处理 RFC 4180 规范细节,比手写更可靠
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











