EasyExcel完成excel文件的导入导出

博客 分享
0 215
张三
张三 2022-03-27 22:57:15
悬赏:0 积分 收藏

EasyExcel完成excel文件的导入导出

简介

 常见的Excel分析框架有Apache poi 和EasyExcel, poi在另一篇已经介绍过了,详情可以看[https://www.cnblogs.com/jasmine-e/p/16064518.html]。
这篇主要针对EasyExcel,它是阿里巴巴开源的一个excel处理框架,使用简单,节省内存。解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析,因此大大减少占用内存。官网:[https://github.com/alibaba/easyexcel]。

入门案例

一、导入pom依赖

<dependencies>    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>easyexcel</artifactId>        <version>2.1.7</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-simple</artifactId>        <version>1.7.5</version>    </dependency>    <dependency>        <groupId>org.apache.xmlbeans</groupId>        <artifactId>xmlbeans</artifactId>        <version>3.1.0</version>    </dependency>    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <version>1.18.12</version>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>    </dependency></dependencies>

二、创建实体类

@Datapublic class ExcelStudentDTO {    @ExcelProperty("姓名")    private String name;    @ExcelProperty("生日")    private Date birthday;    @ExcelProperty("薪资")    private Double salary;}

三、导出excel

public class ExcelWriteTest {    @Test    public void simpleWriteXlsx() {        String fileName = "d:/excel/simpleWrite.xlsx"; //需要提前新建目录        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭        EasyExcel.write(fileName, ExcelStudentDTO.class).sheet("模板").doWrite(data());    }        //辅助方法    private List<ExcelStudentDTO> data(){        List<ExcelStudentDTO> list = new ArrayList<>();        //算上标题,做多可写65536行        //超出:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)        for (int i = 0; i < 65535; i++) {            ExcelStudentDTO data = new ExcelStudentDTO();            data.setName("Helen" + i);            data.setBirthday(new Date());            data.setSalary(123456.1234);            list.add(data);        }        return list;    }}

四、读取Excel

- 创建监听器

@Slf4jpublic class ExcelStudentDTOListener extends AnalysisEventListener<ExcelStudentDTO> {        /**     * 这个每一条数据解析都会来调用     */    @Override    public void invoke(ExcelStudentDTO data, AnalysisContext context) {        log.info("解析到一条数据:{}", data);    }    /**     * 所有数据解析完成了 都会来调用     */    @Override    public void doAfterAllAnalysed(AnalysisContext context) {        log.info("所有数据解析完成!");    }}

- 读取数据

public class ExcelReadTest {    /**     * 最简单的读     */    @Test    public void simpleReadXlsx() {        String fileName = "d:/excel/simpleWrite.xlsx";        // 这里默认读取第一个sheet        EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).sheet().doRead();    }    @Test    public void simpleReadXls() {        String fileName = "d:/excel/simpleWrite.xls";        EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).excelType(ExcelTypeEnum.XLS).sheet().doRead();    }}
posted @ 2022-03-27 21:55 素衣黛眉 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    张三

    张三 (王者 段位)

    821 积分 (2)粉丝 (41)源码

     

    温馨提示

    亦奇源码

    最新会员