需求:从excel中写入数据和读取数据
一、EasyExcel实现Excel写操作
第1步:创建maven项目导入依赖
<dependencies>
<!--easyExcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
<!--因为easyExcel是对poi的封装,所以需要poi依赖,父类已经引用这两个依赖了,所以自己继承就好了,不用再引入啦-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<poi.version>3.17</poi.version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<poi.version>3.17</poi.version>-->
</dependency>
</dependencies>
第2步:新建实体类(excel表中要添加的字段)
package com.lian.demo.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class ExcelDemo {
//设置excel表头名称
@ExcelProperty("学生编号")
private Integer sno;
@ExcelProperty("学生姓名")
private String sname;
}
第3步:easyExcel将数据写入到excel表中
package com.lian.demo.excel;
import com.alibaba.excel.EasyExcel;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class TestEasyExcel {
@Test
public void testwrite() {
//实现excel的写操作
//1、设置写入文件夹地址和excel文件名称
String fileName = "E:\\1.xls";
//2、调用easyExcel的api实现写操作
//第一个参数是文件路径名称,第二个参数是实体类class
EasyExcel.write(fileName,ExcelDemo.class).sheet("学生列表").doWrite(getData());
}
public static List<ExcelDemo> getData(){
ArrayList<ExcelDemo> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
ExcelDemo data = new ExcelDemo();
data.setSno(i);
data.setSname("pi"+i);
list.add(data);
}
return list;
}
}
第4步:结果展示
二、EasyExcel实现Excel读操作
第1步:创建和excel对应字段的实体类
package com.lian.demo.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class ExcelDemo {
//设置excel表头名称
@ExcelProperty(value = "学生编号",index = 0)
private Integer sno;
@ExcelProperty(value = "学生姓名",index = 1)
private String sname;
}
第2步:创建监听对excel进行读取
package com.lian.demo.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class EasyListener extends AnalysisEventListener<ExcelDemo> {
//一行一行读取excel的内容
@Override
public void invoke(ExcelDemo data, AnalysisContext analysisContext) {
System.out.println("***"+data);
}
//读取表头内容
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头:"+headMap);
}
//读取完成后
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
第3步:测试easyExcel读操作
@Test
public void testread() {
//实现excel的读操作
//1、设置读取文件夹地址和excel文件名称
String fileName = "E:\\1.xls";
//2、调用easyExcel的api实现读操作
//第一个参数是文件路径名称,第二个参数是实体类class,第三个参数是监听类
EasyExcel.read(fileName,ExcelDemo.class,new EasyListener()).sheet().doRead();
}
第4步:结果展示
Began to read:ReadSheetHolder{sheetNo=0, sheetName='学生列表'} com.alibaba.excel.read.metadata.holder.ReadSheetHolder@5762806e
表头:{0=学生编号, 1=学生姓名}
***ExcelDemo(sno=0, sname=pi0)
***ExcelDemo(sno=1, sname=pi1)
***ExcelDemo(sno=2, sname=pi2)
***ExcelDemo(sno=3, sname=pi3)
***ExcelDemo(sno=4, sname=pi4)
***ExcelDemo(sno=5, sname=pi5)
***ExcelDemo(sno=6, sname=pi6)
***ExcelDemo(sno=7, sname=pi7)
***ExcelDemo(sno=8, sname=pi8)
***ExcelDemo(sno=9, sname=pi9)