【发布时间】:2021-01-01 18:08:06
【问题描述】:
我想从 Spring Boot 应用程序中执行一个 VB 脚本,脚本如下:
' Creating a file as test acces to macro
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CreateTextFile("C:\excel\FLAG_TEST")
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\excel\excelFile.xls")
objExcel.Application.EnableEvents = False
objExcel.Application.DisplayAlerts = False
objExcel.Application.Run "excelFile.xls!executeMacroFunction"
objExcel.Application.Quit
我尝试通过以下方式从 Spring Boot 服务执行脚本:
Runtime.getRuntime().exec(new String[]{"C:\\Windows\\System32\\wscript.exe", "C:/vb/script.vbs"});
上述行代码不适用于部署在 Tomcat 9 上的应用程序(在 Eclipse 上作为 Spring Boot App 运行时可以正常工作)
然后我尝试通过从应用程序启动的批处理文件执行脚本 在批处理文件上,我尝试通过
执行VB脚本rem First way
Set wscript = CreateObject("WScript.Shell")
wscript.Run "C:/vb/script.vbs"
--------------------
rem Second way (System 64bit)
C:\Windows\System32\wscript.exe C:/vb/script.vbs
--------------------
rem Third way (System 64bit)
wscript C:/vb/script.vbs
还可以通过不同的方式从 Java 运行批处理文件:
// First way
ProcessBuilder processBuilder = new ProcessBuilder("C:/batch/executor.bat");
final Process process = processBuilder.start();
// Second way
Process process = Runtime.getRuntime().exec("cmd /c start \"\" C:/batch/executor.bat");
// Third way
Process process = Runtime.getRuntime().exec(
"cmd /c start \"\" C:/batch/executor.bat",
null,
new File("C:\\Windows\\SysWOW64"));
所有这些方法都不起作用,脚本没有问题,因为当我手动运行批处理文件(通过双击)时它们可以工作
在 Spring Boot 执行宏时,会创建测试文件 (FLAG_TEST),然后在该行阻止执行:
Set objExcel = CreateObject("Excel.Application")
我错过了什么吗?...提前非常感谢!
【问题讨论】:
标签: excel spring-boot vbscript tomcat9