Java 导出 Excel 文件的常见实现方法
在 Java 中导出 Excel 文件的方法有多种,主要依赖不同的类库或工具,每种方法适用于不同的场景(如数据量大小、格式复杂度、易用性等)。以下是常见的几种实现方式:
选择建议 简单格式 + 小数据量:Apache POI(XSSF/HSSF)或 EasyExcel。 复杂格式 + 中大数据量:EasyExcel(优先)或 POI + 自定义样式。 超大数据量(百万级):EasyExcel(默认优化)或 POI 的 SXSSF。 固定模板报表:Freemarker/Thymeleaf 模板引擎。 纯数据导出(无格式):CSV 格式。
其中,EasyExcel 因易用性和性能优势,成为目前 Java 导出 Excel 的主流选择,尤其在业务系统中广泛应用。
一、基于 Apache POI(最常用)
Apache POI 是 Apache 基金会的开源项目,是 Java 处理 Microsoft Office 文档(包括 Excel)的主流工具,支持.xls(Excel 97-2003)和.xlsx(Excel 2007+)格式。
核心类 HSSF:处理 .xls 格式(最多 65536 行,适合小数据量)。 核心类:HSSFWorkbook(文档)、HSSFSheet(工作表)、HSSFRow(行)、HSSFCell(单元格)。
XSSF:处理 .xlsx 格式(支持百万级行,适合中大数据量)。 核心类:XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell。
SXSSF:XSSF 的扩展,支持大数据量导出(通过内存优化,适合十万级以上数据,避免 OOM)。
优点 功能全面,支持复杂格式(单元格样式、合并单元格、公式、图表等)。 兼容性好,支持所有 Excel 版本。
缺点 代码相对繁琐,需要手动创建行、单元格并设置样式。 处理大数据时(如十万级以上),XSSF 可能占用较多内存(需用 SXSSF 优化)。
示例代码片段(XSSF)
// 创建.xlsx 文档
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sheet1");
// 创建标题行
XSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("姓名");
row.createCell(1).setCellValue("年龄");
// 填充数据
XSSFRow dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue("张三");
dataRow.createCell(1).setCellValue(25);
();
workbook.write(fos);
fos.close();
workbook.close();

