alibaba/easyexcel

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

Open

#4,094 opened on Mar 14, 2025

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

Repository metrics

Stars
 (33,728 stars)
PR merge metrics
 (No merged PRs in 30d)

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