asyExcel写
特点:阿里巴巴开源的工具,代码简化,占用内存少,优化OOM(内存溢出异常)
1 pom引入依赖
由于pom底层也是使用的poi进行处理,为了避免冲突,我们把pom引入的pom注释掉
<!--easyExcel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.0-beta2</version> </dependency> <!--导入依赖jar包--> <!--xls(03)--> <!--<dependency>--> <!--<groupId>org.apache.poi</groupId>--> <!--<artifactId>poi</artifactId>--> <!--<version>3.9</version>--> <!--</dependency>--> <!-- xlsx(07) --> <!--<dependency>--> <!--<groupId>org.apache.poi</groupId>--> <!--<artifactId>poi-ooxml</artifactId>--> <!--<version>3.9</version>--> <!--</dependency>-->
2 准备一个实体类 因为easyexcel根据实体类自动生成的表 效率非常的高
package com.wyh.entity; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.util.Date; /** * @program: JavaExecl * @description: easyExcel实体类 可以用它生成excel * @author: 魏一鹤 * @createDate: 2021-12-18 23:03 **/ @Data public class DemoData { @ExcelProperty("字符串标题") private String string; @ExcelProperty("日期标题") private Date date; @ExcelProperty("数字标题") private Double doubleData; /** * 忽略这个字段 */ @ExcelIgnore private String ignore; }
它对应生成的就是这样
3 写一个基本的写入操作
//根据list写入excel @Test public void simpleWrite() { // 写法1 JDK8+ // since: 3.0.0-beta1 //生成的文件名和文件所在位置 String fileName =path+"easyExcel.xlsx"; //开始写入 这里说下几个参数 //1 fileName 是一个io流 自动生成excel //2 DemoData.class根据哪个类的规则去生成excel //3 sheetName 生成的表的名字 //4 进行写出,写入到规则就是我们上面定义的方法循环 EasyExcel.write(fileName,DemoData.class).sheet("模板").doWrite(data()); }
完整的代码
package com.wyh.Test; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.wyh.entity.DemoData; import org.apache.commons.collections4.ListUtils; import org.junit.Test; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @program: JavaExecl * @description: easyExcel写操作 * @author: 魏一鹤 * @createDate: 2021-12-18 23:08 **/ public class EasyExcelWrite { //全局路径,供我们操作使用方便 static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\"; private List<DemoData> data() { List<DemoData> list = new ArrayList<DemoData>(); for (int i = 0; i < 10; i++) { DemoData data = new DemoData(); data.setString("字符串" + i); data.setDate(new Date()); data.setDoubleData(0.56); list.add(data); } return list; } //根据list写入excel @Test public void simpleWrite() { // 写法1 JDK8+ // since: 3.0.0-beta1 //生成的文件名和文件所在位置 String fileName =path+"easyExcel.xlsx"; //开始写入 这里说下几个参数 //1 fileName 是一个io流 自动生成excel //2 DemoData.class根据哪个类的规则去生成excel //3 sheetName 生成的表的名字 //4 进行写出,写入到规则就是我们上面定义的方法循环 EasyExcel.write(fileName,DemoData.class).sheet("模板").doWrite(data()); } }
运行完毕之后发现已经生成了,而且和我们想要的数据格式是一样的