com.alibaba >easyexcel2.2.7
在这需要引入easyexcel的jar(必须),在实际项目还会引入
二、代码实现 1.建表单对象org.projectlombok >lombokcom.alibaba >fastjson1.2.73
比较推荐这一种写法,可以直接将表单的每一条直接转成对象。
注意:这里推荐的写法是读取时采用@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;
@ExcelProperty(index = 3)
private Double tempera2;
@ExcelProperty(index = 4)
private Double tempera;
@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
下面是新版本的写法,这种写法推荐自己写一个监听器继承(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总结{ private List 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 getUsers() { return users; } public void setUsers(List users) { this.users = users; } }
欢迎沟通交流



