一、依赖引入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependency>
在这需要引入easyexcel的jar(必须),在实际项目还会引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
二、代码实现
1.建表单对象
比较推荐这一种写法,可以直接将表单的每一条直接转成对象。
注意:这里推荐的写法是读取时采用@ExcelProperty(index = 1),给index值的这种写法
在导出excel文件的时候,需要写value值,这样excel就不需要自己处理表头
@Data
public class ExcelMode extends BaseRowModel {
@ExcelProperty(index = 0,value = "模型运行日期")
private String date;
@ExcelProperty(index = 1)
private String time;
@ExcelProperty(index = 2)
private String place;
/**
* 2m温度
*/
@ExcelProperty(index = 3)
private Double tempera2;
/**
* 地表温度
*/
@ExcelProperty(index = 4)
private Double tempera;
/**
* <p>比湿</p>
*/
@ExcelProperty(index = 5)
private Double bishi;
..........
}
@Data
public class UserExcel{
@ExcelProperty(index = 0,value = "姓名")
private String name;
}
2.读入数据
老版本的写法,目前已经被废弃了不推荐使用
业务代码
public static void main(String[] args) throws FileNotFoundException {
String readPath = "a.xlsx";
// sheetNo:从0开始 headLineMun:除去表头(表头为0)
Sheet sheet = new Sheet(0, 1, ExcelMode.class);
// 这里的read就是excel解析后的对象数组
List<Object> read = EasyExcelFactory.read(new FileInputStream(readPath), sheet);
System.out.println();
}
下面是新版本的写法,这种写法推荐自己写一个监听器继承(AnalysisEventListener),可以实现自定义
业务代码
public static void main(String[] args) throws FileNotFoundException {
String file = "t.xlsx";
String reFile = "re.xlsx";
UserExcelListener listener = new UserExcelListener();
// 读取
EasyExcel.read(new File(file), UserExcel.class, listener).sheet(0).doRead();
// 写入
EasyExcel.write(reFile, UserExcel.class).sheet(0,"用户表").doWrite(listener.getUsers());
System.out.println();
}
监听
@Slf4j
public class UserExcelListener extends AnalysisEventListener<UserExcel> {
private List<UserExcel> users = new ArrayList<>();
@Override
public void invoke(UserExcel userExcel, AnalysisContext analysisContext) {
log.info("解析数据:{}", JSON.toJSONString(userExcel));
users.add(userExcel);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// users.clear();
}
public List<UserExcel> getUsers() {
return users;
}
public void setUsers(List<UserExcel> users) {
this.users = users;
}
}
总结
欢迎沟通交流