一、环境搭建
此工具是阿里巴巴提供的开源工具,用来读取excel表格中数据,而且是一行一行读,速度快,浪费资源少
1、引入依赖
<!--easyExcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.3</version>
</dependency>
二、写操作
1、创建实体类
package com.esayexcel.test.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class DomeData {
//设置excel表头名
@ExcelProperty("学生编号")
private Integer sno;
@ExcelProperty("学生姓名")
private String name;
}
2、测试类测试
package com.esayexcel.test.excel;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class TestWrite {
public static void main(String[] args) {
//1、设置要写入的文件的路径
String path="F:/2.xlsx";
//需要写入的内容,随便创建点,就不从数据库取了,保证结果集放在List集合中即可
List<DomeData> list=new ArrayList<>();
for(int i=1;i<=10;i++) {
DomeData domeData=new DomeData();
domeData.setSno(i);
domeData.setName("第"+i);
list.add(domeData);
}
//2、调用easyExcel中方法,write是一个重载方法,有多种参数,但都是第一个参数重载,有直接传File对象的,有传输出流的,我这里用路径
//第二个参数是你实体类的对象
//.sheet设置表名(每个excel工作铺有多个sheet表)
//.doWrite 将List集合写入指定excel
EasyExcel.write(path, DomeData.class).sheet("test").doWrite(list);
}
}
三、读操作
1、创建实体类
2、创建监听器
package com.esayexcel.test.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener {
private Integer num=0;
//按行读取内容
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
System.out.println("第"+(num++)+"行"+o);
}
//读取完成后
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("=========读取完成=======");
}
}
3、测试
package com.esayexcel.test.excel;
import com.alibaba.excel.EasyExcel;
public class TestWrite {
public static void main(String[] args) {
//1、设置要读取的文件的路径
String path="F:/2.xlsx";
//2、调用easyExcel中方法,read是一个重载方法,有多种参数,但都是第一个参数重载,有直接传File对象的,有传输出流的,我这里用路径
//第二个参数是你实体类的对象
//第三个参数时你的监听器类
//.sheet设置表名(每个excel工作铺有多个sheet表)
//.doRead 读方法
EasyExcel.read(path, DomeData.class,new ExcelListener()).sheet("test").doRead();
}
}