EasyExcel 基础用法

1.使用注解导出基础格式数据

1.1 创建数据格式基础描述类
java 复制代码
@Data
@AllArgsConstructor
public class ExcelData{

    @ExcelProperty(value="第一列", index = 0)
    private String col1;

    @ExcelProperty(value="第二列", index = 1)
    private String col2;
   
    @ExcelProperty(value="第三列", index = 2)
    private String col3;

    @ExcelProperty(value="第四列", index = 3)
    private String col4;

}

常用基础注解:

@ExcelProperty 注解 , value 设置标题 ,index 设置标题排序 ,位置从 0 开始

@ContentStyle 注解,horizontalAlignment 设置风格

@ColumnWidth 注解,设置单元格的宽度

1.2 导出数据

EasyExcel.write(文件路径 / 数据流(比如:response.getOutputStream(),new FileOutputStream() )).head(ExcelData.class).sheet("sheet1").doWrite(excelDataList );

write() 方法设置数据目标数据流 ,

head() 方法设置标题

sheet() 方法设置 sheet 数据页的名字

doWrite 方法将数据写到数据流中

1.3 导出数据示例

ExcelData excelDate = new ExcelData(1,2,3,4);

2. 单元行合并设置

单元格合并可以继承 AbstractRowWriteHandler 类或者实现 CellWriteHandler 类,重写两个类中的 afterRowDispose/afterCellDataWrite方法,两个方法的核心点如下:

  1. 生成 CellRangeAddress 对象,该对象用于描述单元格合并方式,如

new CellRangeAddress(1, 3, 1, 1) ,描述纵向合并单元格 ,合并 1~3 三行

new CellRangeAddress(1, 1, 1, 3) ,描述横向合并单元格 ,合并 1~3 三列

  1. 需要将生成的 CellRangeAddress 添加,如下

writeSheetHolder.getSheet().addMergedRegionUnsafe(cellRangeAddress);

(writeSheetHolder : 该对象是 afterRowDispose/afterCellDataWrite 方法入参,不需要关心)

注意:重写方法后还不能实现单元格合并,需要将处理类注入,如下:

EasyExcel.write(fileName, CityExportDTO.class) .registerWriteHandler( 你的单元格数据处理类(new YourObject()) ).sheet("Sheet1").doWrite(dataList);

3. 单excel 文件多 sheet 页数据写入

  1. 创建一个 ExcelWriter 对象 ExcelWriter writer = EasyExcel.write(文件路径 / 数据流).build();

该代码可以理解为创建了一个 excel 文档

  1. 创建一个 WriteSheet 对象(如下),该代码可以理解为创建了一个 sheet 页(如果是多个sheet 页,多写几次创建sheet 页代码或者循环创建)

WriteSheet sheet = EasyExcel.writerSheet(index,sheetName).head().build();

  1. 将第二步中的sheet 页写入到第一步的 excel 文档中,使用 writer.write(dataList(要写入的数据), sheet (sheet 页对象) ); (多个 sheet 页多写几次代码)

  2. 将数据从内存刷入到文件中,writer.finish()

如果写入多个 sheet 页到同一个文档中或者将数据分页都可以使用该方法,writer.finish() 方法千万不能漏掉

4. 自定义 excel 数据读取类型转换器

实现 Converter 类重写 ConvertToJavaData 方法,如:我需要自定义String类型日期转换为 LocalDateTime 类型

java 复制代码
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

/**
 * EasyExcel自定义转换器:将String类型转换为LocalDateTime类型
 */
public class StringToLocalDateTimeConverter implements Converter<LocalDateTime> {

    // 支持的日期格式,可根据实际需求扩展
    private static final FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");


    /**
     * 从Excel读取数据时,将String转换为LocalDateTime
     */
    @Override
    public LocalDateTime convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, 
                                         GlobalConfiguration globalConfiguration) {
        String dateStr = cellData.getStringValue();
        if (dateStr == null || dateStr.trim().isEmpty()) {
            return null;
        }
        return LocalDateTime.parse(dateStr, FORMATTER);
  
    }

}

自定义类写好后需要在字段注解中注入该转换类,如下:

@ExcelProperty(value = "创建时间", converter = StringToLocalDateTimeConverter.class)
private LocalDateTime createTime;

相关推荐
吳所畏惧1 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈1 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
维天说2 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling3 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
爱写代码的阿森3 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森3 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
Zane19943 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了4 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品4 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘4 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts