[alibaba/easyexcel]写出100万行50列数据到xlsx文件,实际文件只有30万行。

2024-05-16 309 views
7

问题

1.写出100万行50列数据到xlsx文件,实际文件只有30万行。 2.经过测试:

  1. 当数据列数为20列时,生成100万行数据。符合预期。
  2. 当数据列数为30列时,生成30万行。不符合预期,预期生成100万行。

3.环境:java8,easyexcel:3.0.5

触发场景描述

触发Bug的代码

  //data=("test1","test2","test3",...,"test50")
   void WriteNewFile(List<List<String>> data,int count){
        String pathSrc      = "E:\\Projects\\localTestData\\OutPut\\EXCEL_test_new.xlsx";
        ExcelWriter excelWriter = EasyExcel.write(pathSrc).build();
        try {
                WriteSheet writeSheet = EasyExcel.writerSheet("test1").build();
                for (int k = 0; k < 1000000; k++) {
                    excelWriter.write(data, writeSheet);
                }
        } finally {
            if (excelWriter != null) {
                excelWriter.finish();
            }
        }
    }

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

程序正常运行,生成目标excel文件。

回答

5

@Guevara2019 示例代码运行会报错...

image

1

@01088888888 报错信息是 xlsx文件一个sheet最大行数是1048576行。 示例代码中,k最大是100万,data如果大于1行,总行数就超过1048576行了,就报错了。

4

@01088888888 我重新修改了一下我之前提交的出现bug的代码,麻烦再看看

4

@Guevara2019 环境:JRE1.8、EE版本3.0.5;未复现你所描述的情况,如果还有问题的话 是否可以提供一下出现BUG的完整代码。

复现代码 image

data值 image

导出结果 image

2

@01088888888 我重新修改了下代码 还是少了。麻烦再看看。 image

生成的excel文件如下: image

1

@Guevara2019 麻烦也提供一下WriteNewFile方法的调用方代码

5

@01088888888 对生成的文件用WPS打开,显示不全。用OFFICE打开,显示正常。程序没有问题,非常抱歉打扰了这么长时间。 非常感谢!!!