easyExcel的作用 , 通过java代码操作excel表格
一.对Excel的写操作
- 引入依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
- 创建与excle对应的实体类
package com.example.test.excle;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class DemoData {
@ExcelProperty("学生编号")//设置excle表头名称
private Integer sno;
@ExcelProperty("学生姓名")//设置excle表头名称
private String sname;
}
- 创建测试类
package com.example.test.excle;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class TestEasyExcel {
public static void main(String[] args) {
//实现excle写的操作
//1 设置写入文件夹的地址和excle文件名称
String filename = "F:\\write.xlsx";
//2 调用easyExcel里面的方法实现写操作
// write方法中两个参数 , 第一个是文件存储的路径名称 , 第二个是实体类.class
EasyExcel.write(filename , DemoData.class).sheet("学生列表").doWrite(getData());
}
//创建一个方法返回list集合
private static List<DemoData> getData(){
List<DemoData> list = new ArrayList<>();
for(int i = 0 ; i < 10 ; i++){
DemoData demoData = new DemoData();
demoData.setSname("marry" + i);
demoData.setSno(i);
list.add(demoData);
}
return list;
}
}
二.对excel的读操作
- 引入依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
- 创建实体类
package com.example.test.excle;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class DemoData {
@ExcelProperty(value = "学生编号" , index = 0)//设置excle表头名称
private Integer sno;
@ExcelProperty(value = "学生姓名" , index = 1)//设置excle表头名称
private String sname;
}
- 创建监听进行excel文件的读取
package com.example.test.excle;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<DemoData> {
//一行一行的读取excel的数据 , 不包括表头 , 也就是不读取第一行
@Override
public void invoke(DemoData demoData, AnalysisContext analysisContext) {
System.out.println("****" + demoData);
}
//读取表头的内容
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头:" + headMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
- 方法调用
package com.example.test.excle;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class TestEasyExcel {
public static void main(String[] args) {
// 实现exce读操作
String filename = "F:\\write.xlsx";
EasyExcel.read(filename , DemoData.class , new ExcelListener()).sheet().doRead();
}
}