绪论
当面对很多数据要处理,并且需要导入导出Excel表格时。在使用POI时发现非常耗内存,这时GitHub上的阿里开源项目Easy Excel可以解决此类问题,它是基于java的读写Excel,十分省内存。本篇博文主要是总结其简单使用以及关于添加分类功能的实现。
快速入门
-
创建项目导入依赖(此依赖依靠PIO模块,项目还需要导入PIO模块)
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.4</version> </dependency>
-
创建测试的实体类DemoData
@Data public class DemoData { //设置excel表头名称 @ExcelProperty(value = "学生编号",index = 0) private Integer sno; @ExcelProperty(value = "学生姓名",index = 1) private String sname; }
其中
index
对应excel表格中的列,value
是列的名称 -
写操作
public static void main(String[] args) { //实现excel写的操作 //1 设置写入文件夹地址和excel文件名称 String filename = "D:\\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 data = new DemoData(); data.setSno(i); data.setSname("lucy"+i); list.add(data); } return list; }
-
读操作
public static void main(String[] args) { //实现excel读操作 String filename = "D:\\write.xlsx"; EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet().doRead(); }
这里我们需要创建一个读取excel监听器:
//创建读取excel监听器 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 analysisContext) { System.out.println("表头:"