2016-07-14 41 views
1

是否可以保存工作簿並將其保存,而無需將編輯的文件複製到基本文件上?以不同名稱保存編輯/寫入工作簿

這裏是我的代碼:

File file = new File("base.xlsx"); 
Workbook workbook = WorkbookFactory.create(file); 

Sheet sheet = workbook.getSheet("data"); 
... 
//creating rows and cells, writing stuff 
... 

//saving 
FileOutputStream fos = new FileOutputStream("edited.xlsx"); 
workbook.write(fos); 
workbook.close(); 
fos.close(); 
//now both the base.xlsx and edited.xlsx contain all the new and previous data - and are exactly the same size 

//using only 
workbook.close(); 
//the workbook file size changes (approximately to the same as edited.xlsx) and the timestamp is current 
//BUT the data doesn't get saved 

唯一的可能,我知道的是用一個InputStream(但後來我得到了內存(10MB .xlsx文件和2GB的堆空間))

令人困惑的部分是:爲什麼base.xlsx文件被編輯,如果我把它寫出到另一個文件?

回答

2

隨着2016年7月(Apache的POI 3.15 beta 2版本),這還不支持

在POI,我們稱這種就地寫。截至最近,底層文件格式模塊(POIFS和OPC)現在都支持這一功能。 (他們沒有很長一段時間,這就是爲什麼POI已經成長起來了,就像它爲了保存一樣)。但是,沒有任何格式特定的模塊已更新以利用此功能。因此,所有打開的文件在的usermodel水平(例如WorkbookXLSFSlideShowHWPFDocument)目前只支持寫出到一個新的流

如果您對此感興趣,蟲子看是#57919#59287

如果這些事情給你,你想把一些編碼時間在幫忙,看看contribution guide然後加入the dev list和人們可以給你指針!

+0

謝謝你的解釋! – Beig

相關問題