2013-08-15 13 views
7

Bu yöntemi ikinci kez çağırdığımda dosyadan çalışma kitabını yazıp okumak için bir yöntem oluşturuyorum. hata occure: O hatayı üretebilir aynı XSSFWorkbook iki kez Yazma org.apache.xmlbeans.impl.values.XmlValueDisconnectedExceptionorg.apache.xmlbeans.impl.values.XmlValueDisconnectedException iki kez çalışma kitabını yazarken

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; 
} 

cevap

2

Akokskis ile katılıyorum, iki kez soruna neden oluyor, ancak yazdıktan sonra yeniden çalışma kitabını yeniden yüklemeyi deneyebilirsiniz, o zaman mükemmel çalışır. Örneğin,

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

Bir InputStream aracılığıyla bir Dosya yüklemeyin, daha yavaştır ve daha fazla bellek kullanır! [Bu dosyayı doğrudan Dosya aracılığıyla açın] (http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream), dokümanlarda belirtildiği şekilde – Gagravarr

+0

Gagravarr: Haklısınız. Ama aynı soruya, sorulan soruya cevap verdim. @niks: Gagravarr tarafından verilen öneri gerçekten yararlıdır. Kodunuzu buna göre değiştirirseniz, lütfen bunu yapın. Yukarıdaki sorun için, çalışma kitabını aynı ve güncel dosyayla tekrar yüklemeniz gerekir. – Sankumarsingh

+0

Merhaba, ben aynı şeyi yapıyorum ama benim için çalışmaz – Nikesh

İlgili konular