2013-08-21 166 views
5

xlsm(Excel 2007)を書くためのJavaファイルを作成しました。xlsm(Excel 2007)にApache poiを使って書き込む

Apache POIライブラリを使用すると、xlsxファイルを書き込むことは成功です。そして、xlsmファイルを書くことは成功です。 xlsmファイルを開くとエラーが発生してxlsmファイルを開くことができません。

Apache POIライブラリを使用してxlsmファイルを書き込むことは可能でしょうか?

xlsmを書くことが可能なら、親切にガイドラインを提供してください。Apache poi libraryを使用してxlsmファイルを書き込む方法。

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

おかげで

+1

あなたはPOIのどのバージョンを使用していますか? – centic

+0

poi-3.8バージョンを使用しています。 – user2636961

答えて

12

は、Apache POIの文書によれば、マクロを作成することはできません。

それが読みかつ安全にマクロを保存しますマクロとApache POIを含むファイルを、書き込み再可能ですがhttp://poi.apache.org/spreadsheet/limitations.html。ここで

は一例です:

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

作成されたファイルはあなたにエラーを与えることはありません。

+1

どのように私は特にxlsmのシートの結果セットを書くことができます。 – Rik

2

XLSMはあなたのシートにマクロを必要としない場合、あなたは単に、同様の拡張としての.xlsx使用することができ、マクロでExcelのスプレッドシートです。

また、HSSFWorkbookを使用して.xlsファイル(旧式形式)を作成することもできます。Excelは.xlsファイルを開くことができます。このアプローチの制限は、.xlsの行数が65kに制限されていることのみです。

関連する問題