我已经编写了用于编写xlsm(Excel 2007)的Java文件。
使用Apache POI库,成功编写xlsx文件。并且编写xlsm文件是成功的。但是由于打开xlsm文件时出错,我无法打开xlsm文件。
使用Apache POI库编写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的文档,无法创建宏:http://poi.apache.org/spreadsheet/limitations.html
但是,可以读取和重写包含宏的文件,而apache poi将安全地保留这些宏。
这是一个例子:
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();
}
创建的文件不会给您错误。