2012-02-07 146 views
1

我有大量的數據,我想逐行進行流式處理。我想調用workbook.write(流)後更改每行的值會將每個寫入追加到輸出流,但我錯了。實際上,文件大小建議/匹配我擁有的行數,但文件本身內只有1行(這是寫入的第一行)。將XSSF文件逐行寫入輸出流? (POI in java)

有沒有辦法做到這一點?就像我可以使用文本文件一樣?

我看了一下BigGrid的實現,看起來有點矯枉過正,我試圖做。

謝謝!

回答

4

您無法一次完成整個文件的流式寫入,文件格式不能像那樣工作。在文件的不同部分之間有引用排除它。文件格式只是不像CSV!

相反,您可以做的是在內存中保留一些小部分,將電子表格的大部分流式寫入臨時文件,然後以低內存方式重新組裝以輸出。爲此,請查看POI中的(相當新的)SXSSF usermodel代碼。

+0

只是想知道...不能POI只是直接寫入輸出流?創建臨時文件是問題。特別是在安全的服務器上 – 2017-09-07 17:06:58

+0

@JigarShah XLS和XLSX等Excel格式具有反向和前向引用,因此您不能隨意流式傳輸。您需要在內存中緩衝,在磁盤上緩衝,或放棄並使用像CSV這樣的可流式追加格式 – Gagravarr 2017-09-07 17:52:22