EasyExcel实现导出、导入功能

第一步:添加easyExcel依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.2</version>
        </dependency>

第二步:添加实体类(该类用于excel表头字段名称)

package com.prophesy.bean.common;


import com.alibaba.excel.annotation.ExcelProperty;

import com.alibaba.excel.metadata.BaseRowModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class WriteModel extends BaseRowModel implements Serializable {

    @ExcelProperty("员工姓名")
    private String name;


    @ExcelProperty("员工年龄")
    private Integer age;

    @ExcelProperty("密码")
    private String password;

}

第三步:测试导出d

        @Test
    public void writeExcel1() throws Exception {
        // 文件输出位置
        OutputStream out = new FileOutputStream("D:\\photo\\dd.xlsx");

        ExcelWriter writer = EasyExcelFactory.getWriter(out);

        // 写仅有一个 Sheet 的 Excel 文件, 此场景较为通用
        Sheet sheet1 = new Sheet(1, 0, com.prophesy.bean.common.WriteModel.class);

        // 第一个 sheet 名称
        sheet1.setSheetName("第一个sheet");

        // 写数据到 Writer 上下文中
        // 入参1: 创建要写入的模型数据
        // 入参2: 要写入的目标 sheet
        writer.write(createModelList(), sheet1);

        // 将上下文中的最终 outputStream 写入到指定文件中
        writer.finish();

        // 关闭流
        out.close();
    }
    private List<WriteModel> createModelList(){
        ArrayList<WriteModel> writeModels = new ArrayList();
        for (int i = 0; i <100 ; i++) {
            WriteModel writeModel = new WriteModel();
            writeModel.setAge(100);
            writeModel.setName("测试"+i);
            writeModel.setPassword(":"+i);
            writeModels.add(writeModel);
        }
        return writeModels;
    }

 第四步:测试导入

    @Test
    public void et() throws Exception{
            List<WriteModel> list =  new ArrayList<>();
            /*
             * EasyExcel 读取 是基于SAX方式
             * 因此在解析时需要传入监听器
             */
            // 第一个参数 为 excel文件路径
            // 读取时的数据类型
            // 监听器
            EasyExcel.read("D:\\WriteModel" + ExcelTypeEnum.XLSX.getValue(), WriteModel.class, new AnalysisEventListener<WriteModel>() {

                // 每读取一行就调用该方法
                @Override
                public void invoke(WriteModeldata, AnalysisContext context) {
                    list.add(data);
                }

                // 全部读取完成就调用该方法
                @Override
                public void doAfterAllAnalysed(AnalysisContext context) {
                    System.out.println("读取完成");
                }
            }).sheet().doRead();

            list.forEach(System.out::println);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值