2013-08-21 6 views
5

ich Java-Datei für das Schreiben xlsm (Excel 2007) geschrieben.Schreiben auf xlsm (Excel 2007) unter Verwendung von Apache poi

Verwendung von Apache POI Bibliothek, xlsx-Datei zu schreiben, ist Erfolg. Und das Schreiben der xlsm-Datei ist erfolgreich. Aber ich kann die xlsm Datei wegen des Fehlers nicht öffnen, wenn geöffnete xlsm Datei.

Wäre es möglich xlsm Datei mit Apache POI-Bibliothek zu schreiben?

Wenn es möglich ist, xlsm zu schreiben, bitte kindly Führungslinie liefern Wie xlsm Datei mit Apache Poi-Bibliothek zu schreiben.

XSSFWorkbook workBook = new XSSFWorkbook(); 
XSSFSheet sheet = workBook.createSheet("Related_SRC"); 
String realName = "Test.xlsm"; 
File file = new File("C:\\sdpApp", realName); 
try { 
    FileOutputStream fileOutput = new FileOutputStream(file); 
     workBook.write(fileOutput); 
     fileOutput.close(); 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 

Dank

+1

Welche Version von POI verwenden Sie? – centic

+0

Wir verwenden Poi-3.8-Version. – user2636961

Antwort

12

Gemäß der Dokumentation von Apache POI ist es nicht möglich, Makros zu erstellen: http://poi.apache.org/spreadsheet/limitations.html

Allerdings ist es möglich, lesen und neu zu schreiben, Dateien Makros und Apache poi enthalten, wird sicher das Makros erhalten. Hier

ein Beispiel:

String fileName = "C:\\new_file.xlsm"; 

try { 

    Workbook workbook; 
    workbook = new XSSFWorkbook(
     OPCPackage.open("resources/template_with_macro.xlsm") 
    ); 

    //DO STUF WITH WORKBOOK 

    FileOutputStream out = new FileOutputStream(new File(fileName)); 
    workbook.write(out); 
    out.close(); 
    System.out.println("xlsm created successfully.."); 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (InvalidFormatException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Die Datei, die erstellt wird, werden Sie keinen Fehler geben.

+1

Wie kann ich resultset insbesondere Blatt von xlsm schreiben. – Rik

2

XLSM ist Excel-Tabelle mit Makros, wenn Sie Makros in Ihrem Blatt nicht brauchen, können Sie einfach als Erweiterung auch nutzen .xlsx können.

Sie könnten auch eine .xls-Datei (das heißt älteres Format) über HSSFWorkbook produzieren, soll Excel können .xls öffnen just fine. Einzige Einschränkung bei diesem Ansatz ist, dass .xls in der Anzahl der Zeilen auf 65k beschränkt ist.