alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.09k stars 7.5k forks source link

批量导出出现异常,导致临时文件没有删除 #3940

Open hujun-e opened 1 month ago

hujun-e commented 1 month ago

建议先去看文档

快速开始常见问题

触发场景描述

批量导出,后续循环出现异常时,导致临时文件没有删除

触发Bug的代码

   // 方法1: 如果写到同一个sheet
            String fileName = "D:\\test\\excel\\" + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
            // 这里 需要指定写用哪个class去写
            try (ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build()) {
                // 这里注意 如果同一个sheet只要创建一次
                WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
                // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
                for (int i = 0; i < 2; i++) {
                    // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
                    List<DemoData> data = Collections.singletonList(new DemoData("test"));
                    if (i == 1) {
                        // 第二批数据的时候模拟异常
                        data = new ArrayList<>(data) {
                            @Override
                            public Iterator<DemoData> iterator() {
                                throw new RuntimeException("模拟抛出异常");
                            }
                        };
                    }
                    excelWriter.write(data, writeSheet);
                }
            }

提示的异常或者没有达到的效果

企业微信截图_17241190879017 先调用了close,导致调用dispose失败, image 执行完成后,临时文件没有删除 image