逐行写入XSSF文件输出stream? (Java中的POI)

我有大量的数据,我想stream逐行。 我以为调用workbook.write(stream)后更改每行的值会将每个写入追加到输出stream,但我错了。 实际上,文件大小build议/匹配我拥有的行数,但文件本身内只有1行(这是写入的第一行)。

有没有办法做到这一点? 就像我将能够使用文本文件?

我看了一下BigGrid的实现,看起来有点矫枉过正。

谢谢!

您无法一次完成整个文件的stream式写入,文件格式不能像那样工作。 文件的不同部分之间有引用排除它。 文件格式只是不像CSV!

相反,你可以做的是在内存中保留一些小的部分,将电子表格的大部分stream式写入临时文件,然后以低内存的方式重新组装,以便输出。 要做到这一点,请查看POI中的(相当新的) SXSSF usermodel代码。