java中导出excel文件需用apache poi库,创建xssfworkbook或sxssfworkbook工作簿,填充表头与数据行,再通过fileoutputstream写入本地路径并关闭资源。

Java 中将 Excel 表格数据导出为本地文件,核心是使用第三方库(如 Apache POI)生成 Excel 文件并写入磁盘。不依赖数据库或 Web 框架,纯本地导出可直接通过 FileOutputStream 保存到指定路径。
选择合适的 Excel 库:推荐 Apache POI
Apache POI 是 Java 生态最成熟、文档最全的 Excel 处理库,支持 .xls(HSSF)和 .xlsx(XSSF)格式。推荐使用 poi-ooxml(对应 .xlsx),兼容性好、内存占用可控、功能完整。
- 添加 Maven 依赖(以最新稳定版为例):
<dependency><groupid>org.apache.poi</groupid><artifactid>poi-ooxml</artifactid><version>5.2.4</version></dependency>
注意:若需处理大量数据,建议搭配 SXSSFWorkbook(流式写入),避免内存溢出。
构建工作簿与写入数据的基本流程
以导出用户列表为例,按步骤创建 Sheet、填充行与单元格、设置样式(可选)、最后写出文件。
- 创建
Workbook(推荐XSSFWorkbook或SXSSFWorkbook) - 创建
Sheet,可命名(如"用户信息") - 写入表头(第 0 行),例如:
"ID", "姓名", "邮箱", "注册时间" - 遍历数据列表,每条记录创建一行(
Row),逐列设值(Cell.setCellValue(...)) - 用
FileOutputStream指向目标路径(如"./output/users.xlsx"),调用workbook.write(outputStream) - 务必关闭流和 workbook(可用 try-with-resources 自动释放)
一个简洁可运行的导出示例
以下代码导出一个含 3 条模拟用户的 Excel 文件:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class ExcelExporter {
public static void main(String[] args) {
String filePath = "./users_export.xlsx";
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream(filePath)) {
Sheet sheet = workbook.createSheet("用户信息");
// 表头
String[] headers = {"ID", "姓名", "邮箱", "注册时间"};
Row headerRow = sheet.createRow(0);
for (int i = 0; i
注意事项与常见问题
导出看似简单,但几个细节容易出错:
-
路径权限:确保 Java 进程对目标目录有写权限;相对路径(如
"./output/data.xlsx")基于项目启动目录,建议用绝对路径或先检查父目录是否存在(new File(dir).mkdirs()) - 中文乱码:POI 本身不涉及编码问题(Excel 是二进制格式),但若用文本编辑器打开 .xlsx 会乱码——这是正常现象;真正导出后用 Excel 打开即可正确显示中文
-
日期/数字格式:单纯
setCellValue(LocalDateTime)会报错,需转为字符串或使用CellStyle配合CreationHelper.createDataFormat()设置日期格式 -
大文件优化:超过 10 万行建议用
SXSSFWorkbook,并设置 window size(如new SXSSFWorkbook(1000))限制内存中保留的行数
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











