2013-08-15 39 views
7

私はこのメソッドを2回呼び出すと、ワークブックをファイルから書き込んで読み込む方法を作成しますが、 を作成します。 エラーがoccure:org.apache.xmlbeans.impl.values.XmlValueDisconnectedExceptionorg.apache.xmlbeans.impl.values.XmlValueDisconnectedExceptionワークブックを2回書き込むとき

public XSSFWorkbook GetUpdatedResult(XSSFWorkbook vmworkbookhelper) throws Exception 
{ 
    this.vmWorkbookHelper2 = vmworkbookhelper; 
    String tempName = UUID.randomUUID().toString()+".xlsx"; 
    File tempFile = new File(tempName); 
    fileOut = new FileOutputStream(tempFile); 
    this.vmWorkbookHelper2.write(fileOut); 
    fileOut.close(); 
    vmworkbookhelper = new XSSFWorkbook(tempFile); 
    if(tempFile.exists()) 
     tempFile.delete(); 
    return vmworkbookhelper; 
} 

答えて

2

Akokskisと合意して、2回書くと問題が発生しますが、書き込み後に再びブックを再読み込みすると、完全に機能します。たとえば、

FileOutputStream fileOut = new FileOutputStream("Workbook.xlsx"); 
    wb.write(fileOut); 
    fileOut.close(); 
    wb = new XSSFWorkbook(new FileInputStream("Workbook.xlsx")); 
+1

InputStream経由でファイルをロードしないでください。遅くなり、メモリが増えます。 [代わりにファイルを介して直接開く](http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream)、ドキュメント – Gagravarr

+0

に記載されています。Gagravarr:あなたが正しいです。しかし、私は質問が尋ねられたのと同じ方法で答えを出しました。 @niks:Gagravarrの提案は本当に便利です。それに応じてコードを変更することができたら、それをしてください。上記の問題では、同じファイルと更新されたファイルを再度ブックにロードするだけで済みます。 – Sankumarsingh

+0

こんにちは、私は同じことをしていますが、私のために働いていません – Nikesh

0

同じXSSFWorkbook 2回の書き込みには、そのエラーを生成することができます - それはknown bugです。

関連する問題