1
我有大量的數據,我想逐行進行流式處理。我想調用workbook.write(流)後更改每行的值會將每個寫入追加到輸出流,但我錯了。實際上,文件大小建議/匹配我擁有的行數,但文件本身內只有1行(這是寫入的第一行)。將XSSF文件逐行寫入輸出流? (POI in java)
有沒有辦法做到這一點?就像我可以使用文本文件一樣?
我看了一下BigGrid的實現,看起來有點矯枉過正,我試圖做。
謝謝!
我有大量的數據,我想逐行進行流式處理。我想調用workbook.write(流)後更改每行的值會將每個寫入追加到輸出流,但我錯了。實際上,文件大小建議/匹配我擁有的行數,但文件本身內只有1行(這是寫入的第一行)。將XSSF文件逐行寫入輸出流? (POI in java)
有沒有辦法做到這一點?就像我可以使用文本文件一樣?
我看了一下BigGrid的實現,看起來有點矯枉過正,我試圖做。
謝謝!
您無法一次完成整個文件的流式寫入,文件格式不能像那樣工作。在文件的不同部分之間有引用排除它。文件格式只是不像CSV!
相反,您可以做的是在內存中保留一些小部分,將電子表格的大部分流式寫入臨時文件,然後以低內存方式重新組裝以輸出。爲此,請查看POI中的(相當新的)SXSSF usermodel代碼。
只是想知道...不能POI只是直接寫入輸出流?創建臨時文件是問題。特別是在安全的服務器上 – 2017-09-07 17:06:58
@JigarShah XLS和XLSX等Excel格式具有反向和前向引用,因此您不能隨意流式傳輸。您需要在內存中緩衝,在磁盤上緩衝,或放棄並使用像CSV這樣的可流式追加格式 – Gagravarr 2017-09-07 17:52:22