Loading...
Loading...
An Excel data-writing skill based on Alibaba EasyExcel (com.alibaba:easyexcel:4.0.3). It covers the simplest write methods (3 approaches), complex headers (multi-level), the @ExcelProperty/@ExcelIgnore/@DateTimeFormat/@NumberFormat annotations, selective column export with includeColumn/excludeColumn, style annotations such as @ColumnWidth/@ContentRowHeight, custom styles with @HeadStyle/@ContentStyle, merged cells (@ContentLoopMerge/LoopMergeStrategy), image export (File/InputStream/URL/byte[]), hyperlinks/comments/formulas/rich text (WriteCellData), dynamic headers, automatic column widths, custom interceptors (CellWriteHandler/SheetWriteHandler/RowWriteHandler), paginated and batched writing, direct web downloads to OutputStream, and 03/07 version compatibility. Use this skill when users need to programmatically generate Excel files without predefined templates to export structured data such as orders, users, financial records, inventory, reports, statements, or approval forms. It is not suitable for populating predefined templates; use easyexcel-fill instead. It is also not suitable for reading Excel files; use easyexcel-read instead.
npx skill4agent add full-stack-skills/java-skills easyexcel-writeOfficial documentation: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write Official examples: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java Current version:(Apache-2.0; the repository has been archived and now receives bug fixes only)com.alibaba:easyexcel:4.0.3
@ExcelProperty({"主标题", "副标题"})includeColumnFiledNamesexcludeColumnFiledNames@ColumnWidth@ContentRowHeight@DateTimeFormat@NumberFormatHorizontalCellStyleStrategy@ContentLoopMergeLoopMergeStrategyWriteCellDataHttpServletResponseinMemory(true).xlsexcelType(ExcelTypeEnum.XLS)easyexcel-filleasyexcel-read// 写法 1:JDK8+ 用 Supplier(since 3.0.0-beta1,最简洁)
EasyExcel.write(fileName, DemoData.class)
.sheet("模板")
.doWrite(() -> data());
// 写法 2:传统 + 已有 List
List<DemoData> data = data();
EasyExcel.write(fileName, DemoData.class)
.sheet("模板")
.doWrite(data);
// 写法 3:Builder(多次写入 / 复杂配置)
try (ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.write(data(), writeSheet);
}Official text: "A data volume of 5,000 or fewer is recommended" (the recommended one-time write limit per Sheet).
@ExcelPropertydoWrite()excelWriter.write()doWrite()List<DTO>List<List<String>>ExcelWriter.xlsx| Annotation | Purpose | Key attributes |
|---|---|---|
| Specifies the column name, index, or converter | |
| Ignores the field | — |
| Class-level: excludes unannotated fields from reading and writing | — |
| Date format | |
| Number format | |
| Column width | |
| Header row height | |
| Content row height | |
| Header style (POI-style) | fillPatternType, fillForegroundColor, font, etc. |
| Header font | fontHeightInPoints, color, bold, etc. |
| Content style | Same as HeadStyle |
| Content font | Same as HeadFontStyle |
| Loop merge | |
| One-time absolute merge | |
Official text:defaults toorder; priority:Integer.MAX_VALUE>index>order. Official text: "It is not recommended to use index and name together; use either index alone or name matching alone."value
references/