alibaba/easyexcel

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

Open

#4.094 aberto em 14 de mar. de 2025

Ver no GitHub
 (1 comment) (0 reactions) (0 assignees)Java (7.599 forks)batch import
help wanted

Métricas do repositório

Stars
 (33.728 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 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. 今天再次发布后,问题又消失了

Guia do colaborador