我遇到了解决如何打开现有excel文件,向其添加数据,将该文件输出到浏览器,然后关闭工作簿而不保存任何更改的问题。
以前我用它来创建工作簿:
workbook = new XSSFWorkbook(new FileInputStream(file))
然后将其输出到浏览器:
workbook.write(response.outputStream)
但是我遇到了内存问题,所以我从FileInputStream更改为WorkbookFactory:
workbook = WorkbookFactory.create(file)
然而,这似乎修改了文件(虽然它似乎没有实际编辑任何东西)。我尝试使用带有readonly标志的重载函数,按this SO post:
workbook = WorkbookFactory.create(file,null,true)
但是我不能再使用workbook.write()
,因为它抱怨该文件是只读的。任何人都可以向我解释这样做的正确程序吗?使用workbookFactory解决了我的内存问题,但我不喜欢它以某种方式修改excel文件。
答案 0 :(得分:0)
使用WorkbookFactory
,您只能打开现有文件,而使用该文件执行的任何过程都会导致对其进行修改。您的问题是您不想修改您的文件,因此我建议您解决方案:复制原始文件=>在副本上工作(做你想做的任何事情)=>完成工作后删除此副本。