easyexcel封装
时间: 2023-11-04 11:54:07 浏览: 142
easyexcel-plus是easyexcel的一个扩展项目,它简化了easyexcel导出的使用,并增加了一些功能。其中包括根据注解导出excelexcel样式,如水平、垂直居中、自动换行以及自适应列宽。此外,easyexcel-plus还提供了字典值映射的注解,可以根据enum实现字典的映射导出,以及合并单元格的导出功能。easyexcel-plus还在持续更新中,提供了一些其他功能,如自定义LocalDateTime的读写格式和自定义枚举类型的可读格式。
相关问题
EasyExcel封装工具
### 创建 EasyExcel 封装工具
为了简化 Excel 文件读写操作并提高代码可维护性和重用性,可以创建一个基于 EasyExcel 的封装工具类。此工具类不仅能够提供便捷的方法来处理常见的 Excel 操作需求,还能确保良好的性能表现。
#### 工具类设计原则
- 提供简洁易用的 API 接口;
- 支持多种数据源输入输出方式(文件路径、字节流等);
- 实现错误处理机制以便于调试和日志记录;
- 配置灵活,默认参数合理;
以下是具体实现的一个简单例子:
```java
package com.example.utils;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
public class ExcelUtil {
private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
/**
* 导入Excel到List集合中
*/
public static <T> List<T> importExcel(InputStream inputStream, Class<T> clazz) {
try {
return EasyExcel.read(inputStream).head(clazz).sheet().doReadSync();
} catch (Exception e) {
logger.error("导入失败", e);
throw new RuntimeException("导入失败");
}
}
/**
* 导出List集合到Excel
*/
public static void exportExcel(List<?> list, OutputStream outputStream, WriteSheet writeSheet) {
try {
EasyExcel.write(outputStream).build()
.write(list, writeSheet)
.finish();
} catch (Exception e) {
logger.error("导出失败", e);
throw new RuntimeException("导出失败");
}
}
}
```
该 `ExcelUtil` 类提供了两个静态方法用于分别完成从 Excel 中读取数据至 Java 对象列表以及将 Java 对象列表写出成 Excel 文档的功能[^1]。
对于更复杂的业务场景,则可以根据实际需要进一步扩展此类功能,比如增加对不同版本 Excel 格式的兼容支持、优化大数据量下的内存占用情况等等。
2.1.3 日期、数字或者自定义格式转换数据转换我们只需要实现easyexcel封装的Converter接口即可,比如在上面的用户信息类User的学号属性userNo统一在excel的值加上前缀uno:, 性别属性gender由字符串转枚举值男:0 女:1 未知:2
在EasyExcel的数据处理过程中,如果你需要将日期、数字或其他特定格式的数据从Excel表格转换成程序所需的格式,你可以通过实现`Converter`接口来定制这个转换过程。例如,在处理用户信息类`User`时,假设有一个属性`userNo`,你想在读取Excel时自动将其值前缀为"uno:",可以创建一个专门的转换器类,按照以下步骤操作:
1. 首先,你需要创建一个新的`Converter`实现,如`UserNoPrefixConverter`:
```java
public class UserNoPrefixConverter implements Converter<String, String> {
@Override
public String convert(String sourceData) {
return "uno:" + sourceData; // 在这里添加前缀
}
}
```
2. 对于性别属性`gender`,如果你想将字符串"男"对应整数值0,"女"对应1,"未知"对应2,你可以创建一个枚举类型,并编写对应的转换器:
```java
public enum Gender {
MALE(0),
FEMALE(1),
UNKNOWN(2);
private int value;
Gender(int value) {
this.value = value;
}
public static Gender fromString(String genderStr) {
switch (genderStr) {
case "男":
return MALE;
case "女":
return FEMALE;
default:
return UNKNOWN;
}
}
public int getValue() {
return value;
}
}
class GenderConverter implements Converter<String, Gender> {
@Override
public Gender convert(String sourceData) {
return Gender.fromString(sourceData);
}
}
```
然后,在配置EasyExcel的时候,将这两个转换器应用到相应的字段上。
阅读全文
相关推荐














