2016-07-14 8 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を使用している知っている(しかし、その後、私はメモリ(10メガバイトのの.xlsxファイルと2ギガバイトのヒープ領域)から抜け出す)

混乱する部分は、なぜ別のファイルに書き出すとbase.xlsxファイルが編集されるのですか?

答えて

2

、これはまだPOIで

がサポートされていない2016年7月(ApacheのPOI 3.15ベータ2)のように、我々はを書くインプレースこれを呼び出します。最近では、基礎となるファイル形式モジュール(POIFSとOPC)の両方がこれをサポートしています。 (彼らは長い間、POIは貯蓄のために働くように成長してきた理由ではありませんでした)。しかし、これを利用するためにフォーマット固有のモジュールはどれも更新されていません。だから、すべての文書は、新しいストリームに

を書き出すUserModelレベル(XLSFSlideShowの例WorkbookまたはHWPFDocument)で、現在のみサポートを開いたあなたは、このに興味があるなら、見るべきバグが#57919#59287です。

これらの問題が解決したら、contribution guideをご覧になり、the dev listに参加して、人々があなたに指針を与えることができます。

+0

ありがとうございました! – Beig

関連する問題