如何将Collection变量的输出值存储至CSV、Excel等文件?
把Collection数据导出到CSV/Excel文件的实用方案
嘿,我来帮你搞定这个问题!不管是导出到CSV还是Excel,都有成熟的方法,另外也给你解决运行时看不全Collection数据的小技巧。
一、导出到CSV文件
CSV是最轻便的格式,原生Java就能实现,不用额外依赖:
- 原生Java手写实现
假设你的Collection里存的是自定义对象(比如User,有id、name、email属性),直接用FileWriter就能搞定:
import java.io.FileWriter; import java.io.IOException; import java.util.Collection; public class CsvExporter { public static void exportToCsv(Collection<User> users, String filePath) throws IOException { // try-with-resources自动关闭流,避免资源泄漏 try (FileWriter writer = new FileWriter(filePath)) { // 先写表头 writer.write("ID,Name,Email\n"); // 遍历Collection写入每行数据 for (User user : users) { writer.write(String.format("%d,%s,%s\n", user.getId(), user.getName(), user.getEmail())); } } } }
提醒:如果你的数据里有逗号、双引号这类特殊字符,记得用双引号把字段包起来,比如把user.getName()改成"\"" + user.getName().replace("\"", "\"\"") + "\"",不然CSV会格式错乱哦
- 用OpenCSV库简化操作
嫌自己处理特殊字符麻烦?用OpenCSV库更省心,先加Maven依赖:
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.6</version> </dependency>
然后代码就简洁多了:
import com.opencsv.CSVWriter; import java.io.FileWriter; import java.io.IOException; import java.util.Collection; public class OpenCsvExporter { public static void exportToCsv(Collection<User> users, String filePath) throws IOException { try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) { // 定义表头 String[] header = {"ID", "Name", "Email"}; writer.writeNext(header); // 批量写入数据 for (User user : users) { String[] data = {String.valueOf(user.getId()), user.getName(), user.getEmail()}; writer.writeNext(data); } } } }
二、导出到Excel文件
Excel需要用专门的库,这里推荐阿里的EasyExcel,比Apache POI内存占用低很多,适合大数据量的Collection:
- 先加Maven依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.3.2</version> </dependency>
- 给实体类加注解
给你的对象字段加上Excel表头注解:
import com.alibaba.excel.annotation.ExcelProperty; public class User { @ExcelProperty("用户ID") // 对应Excel表头 private Integer id; @ExcelProperty("用户名") private String name; @ExcelProperty("邮箱") private String email; // 别忘了加构造方法、getter和setter }
- 导出代码
一行核心代码搞定,超级简单:
import com.alibaba.excel.EasyExcel; import java.util.Collection; public class ExcelExporter { public static void exportToExcel(Collection<User> users, String filePath) { EasyExcel.write(filePath, User.class) .sheet("用户列表") // Excel工作表名称 .doWrite(users); // 直接传入Collection } }
小技巧:解决运行时查看Collection数据不全的问题
你说运行时只能看到有限内容?其实可以把Collection转成格式化的JSON打印出来,就能看到完整数据了:
import com.fasterxml.jackson.databind.ObjectMapper; // 假设你的Collection是users ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(users));
这样控制台会输出排版整齐的JSON,所有数据都能看得清清楚楚!
内容的提问来源于stack exchange,提问作者mohammad javad Jafari
相关产品推荐
相关产品推荐

