[alibaba/easyexcel]easyexcel支持分批写入吗?

2024-06-20 927 views
8

例如: 要把一张表 1万条(当然可以更大),分两次从数据库取出一次5000条, 这样,每次取5000条的时候,我写入一次 excel。 主要是想节省内存,这样的想法是否可行?

我看Test类里是一次全写入,是不是可以分开,多次写入? writer.write1(createTestListObject(), sheet1);

public static List<WriteModel> createTestListJavaMode(){
    List<WriteModel> model1s = new ArrayList<WriteModel>();
    for (int i = 0; i <**100000** ; i++) {
        WriteModel model1 = new WriteModel();
        model1.setP1("第一列,第行");
        model1.setP2("121212jjj");
        model1.setP3(33+i);
        model1.setP4(44);
        model1.setP5("555");
        model1.setP6(666.2f);
        model1.setP7(new BigDecimal("454545656343434"+i));
        model1.setP8(new Date());
        model1.setP9("llll9999>&&&&&6666^^^^");
        model1.setP10(1111.77+i);
        model1s.add(model1);
    }
    return model1s;
}

回答

6

相同需求顶下. 我搜了下项目源码lastrow我个人只发现了,对于Head表头对象还有cell要合并的单元格对象有方法. 但是都是对于head,cell来说的.并不是sheet的lastrow.

6

可以多次写入的,多调几次write就可以了

1

调用多次,实际上并没有写入倒硬盘上,还是在内存中,会不会内容很大??? 例如: 写入两次 1、write 写入10000条数据

A、中间 sleep(55000) 查看都本地的文件,只是生成了空的文件,没有内容

2、write 写入10000条数据

B、 再次查看本地文件,含20000条数据

9

发现一个bug,不知道是否是我使用不当导致的,写两个sheet页,比如sheet1和sheet2,多次循环从数据库读数据,然后写法sheet,每次循环都会写sheet1和sheet2,最终发现,每次写数据,都生成了一个head。确定只设置了一次head. image easyExcel如图所示的地方判断会有问题,在sheet1和sheet2两个切换的时候!下图是我使用后生成表格: image