EasyExcel操作API与示例
1. maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.2</version>
</dependency>
2. 注解
ExcelProperty 指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。不写,默认按顺序匹配
value 名头名称
index 字段与列数对应索引
converter 字段转化器
ExcelIgnore 默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
DateTimeFormat 日期转换,用String去接收excel日期格式的数据会调用这个注解。
value SimpleDateFormat格式方式 y(年) M(月 )d(日) h(时) m(分) s(秒)
use1904windowing 是否使用1904windowing
NumberFormat 数字转换,用String去接收excel数字格式的数据会调用这个注解。
value DecimalFormat格式方式 ##.00
roundingMode 取舍方式
ExcelIgnoreUnannotated 默认不加ExcelProperty 的注解的都会参与读写,加了不会参与
ColumnWidth 设置宽
value 数值
ContentRowHeight 设置高
value 数值
HeadRowHeight 设置头高
value 数值
3. Excel读入
3.1 常用操作API
3.1.1 初始化方法
初始化获取Excel读取构造对象(ExcelReaderBuilder)
| 构造方法 | 描述 |
| EasyExcel.read() | 无参初始化,各属性由方法添加 |
| EasyExcel.read(File file) | 文件来源 File,可分别设置对象class和监听器 |
| EasyExcel.read(File file, ReadListener listener) | |
| EasyExcel.read(File file, Class head, listener listener) | |
| EasyExcel.read(String path) | 文件来源 FilePath,可分别设置对象class和监听器 |
| EasyExcel.read(String path, ReadListener listener) | |
| EasyExcel.read(String path, Class head, ReadListener listener) | |
| EasyExcel.read(InputStream in) | 文件来源 InputStream,可分别设置对象class和监听器 |
| EasyExcel.read(InputStream in, ReadListener listener) | |
| EasyExcel.read(InputStream in, Class head, ReadListener listener) |
3.1.2 操作方法
ExcelReaderBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelReader),Sheet构造对象(ExcelReaderSheetBuilder)
| 功能 | 方法 | 描述 |
| Excel属性设置 (ExcelReaderBuilder) |
.head(T.class) | 添加 对象class |
| .file(File file) | 添加 文件,可以是File对象,文件路径,输入流 | |
| .registerReadListener(new MyListener()) | 注册 读取监听器 | |
| .registerConverter(new MyConverter()) | 注册转化器 | |
| .headRowNumber(1) | 设置头行数,默认为1 | |
| .autoTrim(true) | 设置是否去两端空格,默认为 true | |
| .ignoreEmptyRow(true) | 设置忽略空行,默认为 true | |
| .use1904windowing(true) | ||
| .mandatoryUseInputStream(true) | 强制使用输入流 | |
| .excelType(ExcelTypeEnum.XLSX); | 设置类型,默认自动 | |
| .autoCloseStream(true) | 自动关流 | |
| .readCache(new MyReadCache()) | 设置自定义缓存 | |
| .readCacheSelector(new MySelector()) | 设置缓存选择器 | |
| .customObject(null) | ||
| .password("") | ||
| .xlsxSAXParserFactoryName("") | ||
| ExcelReaderBuilder方法; 获取Excel属性设置 (ExcelReader) |
.build() | 构建ExcelReader对象 |
| .doReadAll() | 读取所有数据,可配置监听器读取 | |
| ExcelReaderBuilder方法; 获取sheet构造对象(ExcelReaderSheetBuilder) |
.sheet() | 获取sheet构造器, |
| excelReader方法 | .readAll() | 读取所有数据,可配置监听器读取 |
| .finish() | 关流 | |
| .read(ReadSheet readSheet ) | 数据读取,参数是ReadSheet ,list,不定参 | |
| ExcelReaderSheetBuilder方法; Sheet构造器属性添加 |
.headRowNumber(1) | 设置头行数,默认为1 |
| .head(T.class) | 设置实体类 | |
| .sheetNo(1) | 设置 sheet 索引 | |
| .sheetName("") | 设置 sheet 名称 | |
| .registerReadListener(new MyListener()) | 注册监听器 | |
| .registerConverter(new MyConverter()) | 注册转换器 | |
| .use1904windowing(true) | ||
| .autoTrim(true); | 自动去两边空格 | |
| ExcelReaderSheetBuilder方法; (数据读取) |
sheet.doRead(); | 异步读取,在监听器中进行数据处理 |
| sheet.doReadSync(); | 同步读取,返回结果集 |
3.2 操作实例
//异步读取所有sheet数据,文件可为File,路径,输入流;不设置T.class时,监听器监听数据为List<map>结构,三个参数都可在方法中设置
EasyExcel.read(file,T.class,new MyListener()).doReadAll();
//异步读取所有sheet数据,可在sheet方法参数中指定sheet索引,sheet名称
EasyExcel.read(file,T.class,new MyListener()).sheet().doRead();
//同步读取所有sheet数据,返回list数据,可在sheet方法参数中指定sheet索引,sheet名称
List<Object> list = EasyExcel.read().sheet().doReadSync();
//读取数据的其他方式
ExcelReader excelReader = EasyExcel.read(fileName, T.class, new MyListener()).build();//构建Excel读取对象
ReadSheet build = EasyExcel.readSheet(0).build();//构建Sheet读取对象
excelReader.read(build);//读取数据
excelReader.finish();//关流
4. Excel读入
4.1 常用操作API
4.1.1 初始化方法
初始化获取Excel写出构造对象(ExcelWriterBuilder)
| 构造方法 | 描述 |
| EasyExcel.write() | 无参初始化,各属性由方法添加 |
| EasyExcel.write(File file) | 文件输出源File,文件路径,输出流,可设置class |
| EasyExcel.write(File file,Class head) | |
| EasyExcel.write(String pathName) | |
| EasyExcel.write(String pathName,Class head) | |
| EasyExcel.write(OutputStream outputStream) | |
| EasyExcel.write(OutputStream outputStream,Class head) |
4.1.2 操作方法
ExcelWriterBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelWriter),Sheet构造对象(ExcelWriterSheetBuilder)
各对象公共设置属性方法:
| 对象 | 方法 | 描述 |
| Excel属性设置 (ExcelWriterBuilder) |
.head(T.class) | 添加 对象class |
| .registerConverter(new MyConverter()) | 注册转换器 | |
| .useDefaultStyle(true) | 是否使用默认样式 | |
| .automaticMergeHead(true) . | 是否自动合并表头 | |
| .excelType(ExcelTypeEnum.XLSX) | 设置文件类型 | |
| .relativeHeadRowIndex(1) | 头行索引 | |
| .includeColumnFiledNames(null) | 导出列包含字段名集合 | |
| .includeColumnIndexes(null) | 导出列包含索引集合 | |
| .excludeColumnFiledNames(null) | 导出列排除字段名集合 | |
| .excludeColumnIndexes(null) | 导出列排除索引集合 | |
| .registerWriteHandler(new MyWriteHandler()); | 注入写出处理器 | |
| .needHead(true) | 是否需要表头 | |
各对象私有方法:
| 功能 | 方法 | 描述 |
| Excel属性设置 (ExcelWriterBuilder) |
||
| .file(File file) | 添加 文件,可以是File对象,文件路径,输入流 | |
| .autoCloseStream(true) | 是否自动关流 | |
| .password("") | 设置密码 | |
| .inMemory(true) | 记忆 | |
| .writeExcelOnException(true) | 异常时写出 | |
| .withTemplate("") | 加载模板 | |
| ExcelWriterBuilder方法; 获取Excel属性设置(ExcelWriter) |
write.build(); | |
| ExcelWriterBuilder方法; 获取Sheet构造器(ExcelWriterSheetBuilder) |
write.sheet(); | |
| ExcelWriter方法 | .write(List data, WriteSheet writeSheet) | 可添加WriteTable参数 |
| .fill(Object data, WriteSheet writeSheet) | 可添加FillConfig参数 | |
| .finish(); | 关流 | |
| .writeContext(); | ||
| ExcelWriterSheetBuilder方法 属性添加 |
.sheetName() | |
| .sheetNo() | ||
| ExcelWriterSheetBuilder方法 操作方法 |
.doFill(Object o); | 数据填充,可添加FillConfig参数 |
| .doWrite(List data) | 数据写出,可添加WriteTable参数 | |
| ExcelWriterSheetBuilder方法 | .sheet.build() | 构建Excel写出对象(WriteSheet) |
| ExcelWriterSheetBuilder方法 | .sheet.table(); | 获取表格构建对象(ExcelWriterTableBuilder) 可填参数 表格索引 |
| ExcelWriterTableBuilder方法 | .build(); | 构建Excel表格对象(WriteTable) |
| .doWrite(); | 数据写出 | |
| WriteSheet方法 | .getColumnWidthMap(); | 获取列映射,set方法设置 |
| .getSheetName(); | 获取Sheet名,set方法设置 | |
| .getSheetNo(); | 获取Sheet号,set方法设置 | |
| .getTableStyle(); | 获取表样式,set方法设置 | |
| WriteTable方法 | .getTableNo(); | 获取表格号,set方法设置 |
| .getTableStyle(); | 设置表格样式,set方法设置 | |
4.3 操作实例
//操作方式1 数据导出,可导出到File,文件路径,输出流
EasyExcel.write(fileName, T.class).sheet("sheetName").doWrite(List<T> list);
//操作方式2
ExcelWriter excelWriter = EasyExcel.write(fileName, T.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.write(List list, writeSheet);
excelWriter.finish();
//操作方式3 导出指定列数据
EasyExcel.write(fileName, T.class).includeColumnFiledNames(Set<String> columnFiledNames).sheet("sheetName")
.doWrite(List<T> list);
注:更多实例点击查看 easyExcel官网
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)