alibaba/easyexcel

同样的数据,生成的excel有时可以打开,有时打不开

Open

#4094 opened on Mar 14, 2025

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Java (33,728 stars) (7,599 forks)batch import
help wanted

Description

同样的数据,batchDataList都是26358行, 分3次写入,多次调用这个方法, 有时返回byte[]长度=5894824,这时生成的excel可以打开; 有时返回byte[]长度=5897583,这时生成的excel打不开

ExcelWriterBuilder excelWriterBuilder = EasyExcel.write(outputStream, clazz).registerWriteHandler(EasyExcelUtil.defaultCellFormat());
        try (ExcelWriter excelWriter = excelWriterBuilder.build()) {
            ExcelWriterSheetBuilder sheet = excelWriterBuilder.sheet(sheetName);
            WriteSheet writeSheet = sheet.build();
            do {
                batchDataList = queryFunction.apply(BatchPageParam.of(queryParam, batchIndex, batchSize));
                excelWriter.write(batchDataList, writeSheet);
                batchIndex++;
                //安全防御代码。
                AssertUtil.isTrue( batchIndex < batchLoopLimit, "批次数量超过上限");
            // 如果数据不足 PAGE_SIZE,说明数据已全部读取完毕
            } while (batchDataList.size() == batchSize);
            excelWriter.finish();
            return outputStream.toByteArray();
        }

获取字节流后,再上传到阿里云oss,在上传前打印了byte[]数组的长度。 easyexcel版本 3.2.1

背景:

  1. 项目2月底发布了一次,每天大约导出35个文件,导出大约450个excel后,13天后开始出现该问题,
  2. 今天再次发布后,问题又消失了

Contributor guide