[英]Apache POI - How to offer excel file for download in a Grails application
我在解決如何打開現有excel文件,向其中添加數據,將該文件輸出到瀏覽器,然后關閉工作簿而不保存任何更改的問題。
以前,我使用它來創建工作簿:
workbook = new XSSFWorkbook(new FileInputStream(file))
並將其輸出到瀏覽器:
workbook.write(response.outputStream)
但是我遇到了內存問題,因此我從FileInputStream更改為WorkbookFactory:
workbook = WorkbookFactory.create(file)
但是,這似乎可以修改文件(盡管實際上並沒有編輯任何內容)。 我嘗試根據此SO帖子使用帶有readonly標志的重載函數:
workbook = WorkbookFactory.create(file,null,true)
但是我不能再使用workbook.write()
了,因為它抱怨文件是只讀的。 誰能向我解釋這樣做的正確程序? 使用workbookFactory似乎可以解決我的內存問題,但是我不喜歡它以某種方式修改了excel文件。
使用WorkbookFactory
您只能打開一個現有文件,並且使用該文件進行的任何處理都會導致對其進行修改。 您的問題是您不想修改文件,因此我為您提出了一個解決方案:制作原始文件的副本=>處理副本(做您想做的任何事情)=>完成后刪除此副本你的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.