我有这个代码可以正确杀死任何正在运行的Excel进程。
public static void killExcel(){
while (isProcessRuning("EXCEL.EXE")){
Runtime.getRuntime().exec("taskkill /IM EXCEL.EXE");
}
}
public static boolean isProcessRuning(String serviceName) throws Exception {
Process p = Runtime.getRuntime().exec(TASKLIST);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains(serviceName)) {
return true;
}
}
return false;
}
我的问题是,如果Excel文件提示保存问题,我有一个无限循环。
答案 0 :(得分:5)
您是否尝试使用/ f选项运行taskkill
以强制终止?有关详细信息,请参阅here。
使用默认选项以允许Excel在可以的情况下很好地退出可能更合适。如果它没有退出,则恢复为强制变量。如果请求,进程通常会退出。如果不是,那可能是有充分理由的。
答案 1 :(得分:0)
你有一个无限循环的原因是因为它在while循环中,你应该把它放在if语句中。这样,它就不会循环。如果所有其他方法都失败,则使用/ f。
答案 2 :(得分:0)
试试这个
public static void killExcel() {
try {
Runtime.getRuntime().exec("taskkill /f /t /IM EXCEL.EXE");
Thread.sleep(1000);
}
catch (IOException | InterruptedException ex) {
Logger.getLogger(ClassName.class.getName()).log(Level.SEVERE, null, ex);
}
}