2013-08-21 14 views
5

Napisałem plik java do pisania xlsm (Excel 2007).napisać do xlsm (Excel 2007) używając apache poi

Korzystanie z biblioteki punktów Apache, zapisywanie pliku xlsx jest sukcesem. Zapisywanie pliku xlsm jest sukcesem. Ale nie mogę otworzyć pliku xlsm z powodu błędu podczas otwierania pliku xlsm.

Czy można napisać plik xlsm przy użyciu biblioteki punktów Apache?

Jeśli można napisać xlsm, uprzejmie prosimy o podanie linii pomocniczej Jak napisać plik xlsm za pomocą biblioteki Apache poi.

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

Dzięki

+1

jakiej wersji UM używasz? – centic

+0

Używamy wersji poi-3.8. – user2636961

Odpowiedz

12

Według dokumentacji Apache POI nie jest możliwe tworzenie makr: http://poi.apache.org/spreadsheet/limitations.html

Jednak jest to możliwe do odczytania i ponownego zapisu plików zawierających makra i Apache POI bezpiecznie zachować makr.

Oto przykład:

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

Plik, który jest tworzony nie daje błąd.

+1

jak mogę napisać zestaw wyników w danym arkuszu Xlsm. – Rik

2

xlsm jest arkusz kalkulacyjny Excel makra, jeśli nie potrzeba makra w arkuszu, można po prostu użyć .xlsx jako rozszerzenie, jak również.

Można również utworzyć plik .xls (to znaczy starszy format) za pośrednictwem HSSFWorkbook, Excel powinien być w stanie otworzyć. Xls w porządku. Jedynym ograniczeniem przy takim podejściu jest to, że .xls ma ograniczoną liczbę wierszy do 65 tys.

Powiązane problemy