Java导出Excel推荐使用Apache POI的SXSSF,按创建工作簿、工作表、写入行列、写出流四步实现,注意UTF-8编码、CellStyle格式、内存控制及异步封装。
Java中实现数据导出到Excel,核心是选择合适的库、组织好数据结构、按规范写入单元格,并注意格式、性能和兼容性。主流方案是用Apache POI(尤其SXSSF处理大数据),兼顾易用性与可控性。
Apache POI 是 Java 生态最成熟、文档最全的 Excel 操作库。它分三类:
– HSSF:处理 .xls(Excel 97–2003)
– XSSF:处理 .xlsx(Excel 2007+),内存占用高
– SXSSF:XSSF 的流式扩展,适合大数据量导出(自动刷盘、内存友好)
生产环境推荐 SXSSF,尤其导出万行以上数据时,避免 OOM。
一个标准导出流程可拆解为:
SXSSFWorkbook() 实例化createSheet("名称")
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,用 workbook.write(outputStream)
实际开发中容易踩坑的点:
response.setCharacterEncoding("UTF-8"),且文件名用 URLEncoder.encode("报表.xlsx", "UTF-8") 编码
CellStyle 设置数据格式(如 "yyyy-MM-dd" 或 "#,##0.00"),别直接 toString()new SXSSFWorkbook(500))CellStyle 对象(不要每行都 new),合并单元格用 sheet.addMergedRegion(new CellRangeAddress(...))
提升可维护性与体验:
基本上就这些。不复杂但容易忽略细节,抓住“选库→建结构→填内容→控输出”主线,再补上格式、编码、内存几个关键点,就能稳稳落地。