Java 高效地将行前置到现有Excel文件
我们正在Scala应用程序中使用ApachePOI的Java 高效地将行前置到现有Excel文件,java,excel,scala,apache-poi,Java,Excel,Scala,Apache Poi,我们正在Scala应用程序中使用ApachePOI的SXSSFWorkbook生成一个大型Excel文件 问题是:我们只有在到达流的末尾时才知道通用列集,因为流到内存中的每一行都可能引入需要输出到Excel文件的新列 到目前为止,我们的方法是:将每一行流式存储到内存中,通过SXSSFWorkbook写入Excel文件,并在过程结束时,计算“标题行”并将其预编到Excel文件中 但是,如果不将整个Excel文件加载到内存中,我们无法确定如何将一行前置到Excel文件中 其他人对此有经验吗?您能创建
SXSSFWorkbook
生成一个大型Excel文件
问题是:我们只有在到达流的末尾时才知道通用列集,因为流到内存中的每一行都可能引入需要输出到Excel文件的新列
到目前为止,我们的方法是:将每一行流式存储到内存中,通过SXSSFWorkbook
写入Excel文件,并在过程结束时,计算“标题行”并将其预编到Excel文件中
但是,如果不将整个Excel文件加载到内存中,我们无法确定如何将一行前置到Excel文件中
其他人对此有经验吗?您能创建一个标题数组吗?这将把主数据放在array1中,头数据放在array2中,您可以将它们放在需要的地方。数据来自一个大型数据库表,因此需要对该表进行两次遍历:第一次遍历计算Excel文件的通用列集,第二次遍历将正文行写入Excel文件。我们可以这样做,但是如果我们能够找到一种方法将一行前置到Excel文件,那么我们只需要遍历数据库一次。对于像
SXSSF
这样的流式写入方法,您将需要首先流式处理第一个数据。没有办法。此外,如果不将所有现有行下移一行,则无法将行前置到图纸。即使您首先让第一行为空,然后再填充,也不能使用apachepoi
SXSSF
以流式方式完成。所以,不,不可能使用apachepoi
。最糟糕的解决方案是在启动SXSSF
之前双击数据库以获得所需的第一行。将数据流转换为高效的内存表示形式,然后当您拥有所有内容时,通过Apache POI写出?