2016-08-03 6 views
-1

Ich habe eine Excel-Datei (test.xlsx), die eine Spalte enthalten, sagen ID, in der ich eine Formel angewendet habe und wenn ich es manuell öffne, ändert sich der Wert aller IDs automatisch , deswegen, wenn ich es schließe, frage ich nach Speichern der Änderungen.Wie öffne und speichere Excel-Datei in Java

gleiche habe ich mit Java-Code versucht, wie unten

public static void main(String[] args) { 

     String str1 = "c:/file/test.xlsx"; 
     try { 


      //open file 
      XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

      //save file 
      FileOutputStream out = new FileOutputStream(str1); 
      wb.write(out); 
      out.close(); 

      wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 

    } 




output: 
Thu Aug 04 01:08:34 IST 2016 
Thu Aug 04 01:08:34 IST 2016 
gegeben

nach oben Ausführung von Code ich nicht immer jede Ausnahme

ich das Ergebnis überprüft haben, durch Datei mit Hilfe von Apache POI lesen .

Ich möchte, nach dem Speichern der Datei mit Code neue IDs sollte in ID-Spalte sein, wie es im Falle manuell Öffnen und Speichern der Datei passiert.

Für mich funktioniert es nicht mit Code.

bitte vorschlagen

Wenn Sie nicht in der Lage sind, das Problem zu verstehen, dann Datei erstellen, wie unten und es öffnen und es manuell schließen, danach mit Code versucht, werden Sie die Dinge verstehen

enter image description here

+0

Was ist "exceldoc"? Das ist nicht im Code definiert ... –

+0

Definieren Sie "nicht arbeiten" bitte, und beachten Sie, dass die Art, eine Arbeitsmappe (mit POI) zu speichern, etwas wie "wb.write (OutputStream)" ist, siehe https: // poi. apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html –

+0

Ich habe meine Frage bearbeitet – vijendra

Antwort

1

ich die Lösung gefunden zu haben, in obigen Code ich nur eine Zeile hinzuzufügen haben, überprüfen Sie bitte unter

public static void main(String[] args) { 

     String str1 = "c:/file/test.xlsx"; 
     try { 


      //open file 
      XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

      //FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); 

      XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); 

      //save file 
      FileOutputStream out = new FileOutputStream(str1); 
      wb.write(out); 
      out.close(); 

      wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 

    } 
Verwandte Themen