我创建了一个简单的Java程序来打开excel文件并向其中写入数据,一旦写入数据,我便继续打开文件以查看电子表格:
String[] cmdarray=new String[]{"cmd.exe","/c","C:\\Users\\Jason\\Documents\\*******\\********\\******.xls"};
Runtime runTime = Runtime.getRuntime();
Process process = runTime.exec(cmdarray);
作为学习曲线的一部分,我然后尝试在10秒后使用以下命令关闭文件:
process.destroy();
但这并没有关闭窗口。谁能指出我要去哪里错了?谢谢你。
private static void OpenExcel() throws IOException {
//Find the File and open it
String[] cmdarray=new String[]{"cmd.exe","/c","C:\\Users\\Jason\\Documents\\*********\\*********\\********.xls"};
Runtime runTime = Runtime.getRuntime();
Process process = runTime.exec(cmdarray);
try{
//Delay
TimeUnit.SECONDS.sleep(10);
}catch (InterruptedException e) {
e.printStackTrace();
//Handle exception
}
//Close Excel
System.out.println("Closing Excel");
process.destroy();
}
}
原因之一可能是著名的JDK错误:
这里的根本问题是,与Unix不同,Windows确实维护了进程之间的父子关系。一个过程可以杀死自己的直系子孙,但是除非您做出其他安排来获取信息,否则就不能杀死任何“孙子”,因为它无法找到它们。
您可以尝试直接执行Excel,而不是通过cmd:
Runtime.getRuntime().exec("C:\\full\\path\\to\\excel.exe C:\\file.xls");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句