2013-08-15 4 views
7

Ich erstelle eine Methode zum Schreiben und Lesen von Arbeitsmappen aus Datei, aber , wenn ich diese Methode das zweite Mal aufrufen. Fehler occure: org.apache.xmlbeans.impl.values.XmlValueDisconnectedExceptionorg.apache.xmlbeans.impl.values.XmlValueDisconnectedException beim zweimaligen Schreiben der Arbeitsmappe

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

Antwort

2

Stimmen Sie mit Akokskis, Schreiben zweimal Problem verursacht, aber Sie können versuchen, die Arbeitsmappe nach dem Schreiben erneut zu laden, dann wird es perfekt funktionieren. Zum Beispiel

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

Laden Sie keine Datei über einen InputStream, es ist langsamer und benötigt mehr Speicher! [Öffnen Sie stattdessen direkt über die Datei] (http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream), wie in der Dokumentation beschrieben – Gagravarr

+0

Gagravarr: Sie haben Recht. Aber ich habe auf die gleiche Weise Antwort gegeben wie die Frage. @niks: Der Vorschlag von Gagravarr ist wirklich nützlich. Wenn Sie Ihren Code entsprechend ändern können, tun Sie das bitte. Für das obige Problem müssen Sie nur Arbeitsmappe erneut mit der gleichen und aktualisierten Datei laden. – Sankumarsingh

+0

Hallo, ich mache das gleiche, aber es funktioniert nicht für mich – Nikesh

0

Schreiben zweimal auf die gleiche XSSFWorkbook diesen Fehler erzeugen kann - es ist ein known bug ist.