EasyExcel3 list<> 写入excel

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

在EasyExcel的示例里面都是使用实体写入Excel的,没有使用List<List<String>>写入的。

这里是利用EasyExcel 3 生成数据流直接给前端导出使用,对于需要生成Excel的,直接把数据流写入excel文件即可。


    /**
     * 导出excel,生成byte数组
     *
     * @param list      数据 list
     * @param sheetName 导入文件的 sheet 名
     */
    public static byte[] exportExcel(List<List<String>> list, String sheetName) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        try (ExcelWriter excelWriter = EasyExcelFactory.write(out).build()) {
            // 这里注意 如果同一个sheet只要创建一次
            WriteSheet writeSheet = EasyExcelFactory.writerSheet(sheetName).build();
            // 先写头,后写数据
            //excelWriter.write(header, writeSheet);
            excelWriter.write(list, writeSheet);
            //关键:否则无数据写入,写完成,缓冲区数据写入out;
            excelWriter.finish();
            log.debug("out.size():{}", out.size());
            return out.toByteArray();
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

 对于实体写入Excel的,这里也对应一段代码,

同样,对于需要生成Excel的,直接把数据流写入excel文件即可。


    /**
     * 导出excel,生成byte数组
     *
     * @param cla       要转换的Object对应Class类
     * @param list      数据 list
     * @param header    表头
     * @param sheetName 导入文件的 sheet 名
     */
    public static byte[] exportExcel(Class<?> cla, List<Object> list, List<Object> header, String sheetName) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        // 这里 需要指定写用哪个class去写
        ExcelWriter excelWriter = EasyExcelFactory.write(out, cla).build();
        // 这里注意 如果同一个sheet只要创建一次
        WriteSheet writeSheet = EasyExcelFactory.writerSheet(sheetName).build();
        // 先写头,后写数据
        excelWriter.write(header, writeSheet);
        excelWriter.write(list, writeSheet);
        //关键:否则无数据写入,写完成,缓冲区数据写入out;
        excelWriter.finish();
        byte[] bytes = out.toByteArray();
        try {
            out.close();
        } catch (IOException e) {
        }
        return bytes;
    }

项目需要引入依赖类:

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

希望对大家有帮助。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值