我创建了一个简单的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");