项目中有个需求要用java代码执行Excel中的宏,之前一般的处理都用poi,但调用宏的时候经了解发现无法胜任。通过网上查找资料,最后用jacob得以解决。代码如下:
public static void executeMacro(String filePath, String macroName) {
Dispatch documents = null;
try {
ActiveXComponent excel = new ActiveXComponent("Excel.Application");
documents = excel.getProperty("Workbooks").toDispatch();
Dispatch.call(documents, "Open", filePath).toDispatch();//打开文档
Dispatch.call(excel, "Run", new Variant(macroName));
System.out.println("执行完毕");
} finally {
System.out.println("关闭文档");
Dispatch.call(documents, "Close");
}
}
//调用
public static void main(String[] args) {
String file = "D:\\test\\测试1.xls";
String macName = "宏1";
executeMacro(file, macName);
}
大家最好尽可能保证dll文件和jar包的版本是一致的,如果你出现了异常,那么请检查你jacob.dll的版本和jar的版本是否一致。
因为网上找到的全是调用word中的宏,这里上传一份excel的代码。调用word中的宏的不再赘述。