使用apache poi写入xlsm(Excel 2007)

我写了用于编写xlsm(Excel 2007)的java文件。

使用Apache POI库,编写xlsx文件是成功的。 写xlsm文件是成功的。 但是当打开xlsm文件时,由于错误,我无法打开xlsm文件。

使用Apache POI Library编写xlsm文件是否可行?

如果写xlsm是可行的,请提供指导如何使用Apache poi库编写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(); } 

谢谢

根据Apache POI的文档,不可能创buildmacros: http : //poi.apache.org/spreadsheet/limitations.html

但是可以读取和重写包含macros和apache的文件poi将安全地保留这些macros。

这里是一个例子:

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

所创build的文件不会给你一个错误。

XLSM是带有macros的Excel电子表格,如果您的工作表中不需要macros,则也可以简单地使用.xlsx作为扩展。

你也可以通过HSSFWorkbook生成一个.xls文件(比如旧格式),Excel应该可以打开.xls。 只有这种方法的限制是.xls的行数限制为65k。