一.简介
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目.
二.功能
1、数据导入:减轻录入工作量
2、数据导出:统计信息归档
3、数据传输:异构系统之间数据传输
三.演示
创建一个普通的maven项目.
引入依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
1.写Excel
创建一个实体类
public class DemoExcelEntity {
//设置表头名称
@ExcelProperty("学生编号")
private int sno;
//设置表头名称
@ExcelProperty("学生姓名")
private String sname;
编写测试方法
@Test
public void writeExcel() {
String fileName = "F:\\easyExcel.xlsx";
/*
四个变量:
1.写入的文件路径
2.要写入的实体类
3.Excel的sheet名
4.写入的数据
该方法文件流会自动关闭
*/
EasyExcel.write(fileName, DemoExcelEntity.class).sheet("easyExcel").doWrite(getDate());
}
//获取写入的数据
public static List<DemoExcelEntity> getDate(){
List<DemoExcelEntity> list = new ArrayList<DemoExcelEntity>();
for (int i = 0; i < 10 ; i++){
DemoExcelEntity demoExcelEntity = new DemoExcelEntity();
demoExcelEntity.setId(i);
demoExcelEntity.setName("easyExcel" + i);
list.add(demoExcelEntity);
}
return list;
}
执行测试方法后在相应的目录下生成了文件.
2.读Excel
在原有基础上创建读取excel监听器.
public class ExcelListener extends AnalysisEventListener<DemoExcelEntity> {
//一行一行读取内容
@Override
public void invoke(DemoExcelEntity demoExcelEntity, AnalysisContext analysisContext) {
System.out.println("*****" + demoExcelEntity);
}
//读取excel表头信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:"+headMap);
}
//读取完成后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
编写测试方法
public void readExcel() {
// 写法1
String fileName = "F:\\easyExcel.xlsx";
EasyExcel.read(fileName, DemoExcelEntity.class, new ExcelListener()).sheet("easyExcel").doRead();
}
执行后,可以看到,通过监听器输出了表格的内容