用途:本技能专注“程序化生成 Excel”场景。当用户没有预制模板,要求用 Java 对象或 Map 直接生成结构化 Excel(订单、用户、财务、库存、报表、对账单、审批单)时使用。依赖 com.alibaba:easyexcel:4.0.3(Apache-2.0,仓库已归档,仅做 Bug 修复)。
主要能力:最简写入(JDK8+ Supplier、传统 List、Builder 三种写法);多级表头(@ExcelProperty({"主标题","副标题"}));选择性导出列(includeColumnFiledNames / excludeColumnFiledNames);注解定义格式(@ColumnWidth、@ContentRowHeight、@DateTimeFormat、@NumberFormat);自定义样式(注解、拦截器、HorizontalCellStyleStrategy);合并单元格(@ContentLoopMerge、LoopMergeStrategy);图片导出(File/InputStream/URL/byte[]);超链接、批注、公式、富文本(WriteCellData 体系);动态表头;多次写入、多 Sheet、多 Table;Web 直接输出到 HttpServletResponse。
使用方式:先定义 DTO/VO 并标注注解,再选择写入方式,配置 Builder(列选择、表头、样式、拦截器),构造 List<DTO> 或 List<List<String>>,执行写入并用 try-with-resources 关闭 ExcelWriter,最后打开 .xlsx 验证。典型写法:EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(() -> data()); 或使用 ExcelWriter 多次 write。注解优先级:index > order > value;不建议 index 与 name 同时使用。
限制:单 Sheet 建议 5000 行以内一次性写入,数据量大需分批;样式对象最多创建 6W 个,否则 Excel 打不开;图片驻内存,超大图建议上传 OSS;批注需 inMemory(true);03 版(.xls)需 excelType(ExcelTypeEnum.XLS)。不适用场景:按预制模板填充(用 easyexcel-fill)、读取 Excel(用 easyexcel-read)、CSV 处理、Word/PPT。本技能不收集、存储或传输任何用户数据。