Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 高效地将行前置到现有Excel文件_Java_Excel_Scala_Apache Poi - Fatal编程技术网

Java 高效地将行前置到现有Excel文件

Java 高效地将行前置到现有Excel文件,java,excel,scala,apache-poi,Java,Excel,Scala,Apache Poi,我们正在Scala应用程序中使用ApachePOI的SXSSFWorkbook生成一个大型Excel文件 问题是:我们只有在到达流的末尾时才知道通用列集,因为流到内存中的每一行都可能引入需要输出到Excel文件的新列 到目前为止,我们的方法是:将每一行流式存储到内存中,通过SXSSFWorkbook写入Excel文件,并在过程结束时,计算“标题行”并将其预编到Excel文件中 但是,如果不将整个Excel文件加载到内存中,我们无法确定如何将一行前置到Excel文件中 其他人对此有经验吗?您能创建

我们正在Scala应用程序中使用ApachePOI的
SXSSFWorkbook
生成一个大型Excel文件

问题是:我们只有在到达流的末尾时才知道通用列集,因为流到内存中的每一行都可能引入需要输出到Excel文件的新列

到目前为止,我们的方法是:将每一行流式存储到内存中,通过
SXSSFWorkbook
写入Excel文件,并在过程结束时,计算“标题行”并将其预编到Excel文件中

但是,如果不将整个Excel文件加载到内存中,我们无法确定如何将一行前置到Excel文件中


其他人对此有经验吗?

您能创建一个标题数组吗?这将把主数据放在array1中,头数据放在array2中,您可以将它们放在需要的地方。数据来自一个大型数据库表,因此需要对该表进行两次遍历:第一次遍历计算Excel文件的通用列集,第二次遍历将正文行写入Excel文件。我们可以这样做,但是如果我们能够找到一种方法将一行前置到Excel文件,那么我们只需要遍历数据库一次。对于像
SXSSF
这样的流式写入方法,您将需要首先流式处理第一个数据。没有办法。此外,如果不将所有现有行下移一行,则无法将行前置到图纸。即使您首先让第一行为空,然后再填充,也不能使用
apachepoi
SXSSF
以流式方式完成。所以,不,不可能使用
apachepoi
。最糟糕的解决方案是在启动
SXSSF
之前双击数据库以获得所需的第一行。将数据流转换为高效的内存表示形式,然后当您拥有所有内容时,通过Apache POI写出?