3

我有这段代码可以正确地杀死任何正在运行的 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 文件提示保存问题,我得到一个无限循环。

4

3 回答 3

5

您是否尝试过taskkill使用 /f 选项强制杀死?有关更多详细信息,请参见此处

如果可以的话,使用默认选项允许 Excel 很好地退出可能更合适。如果它不退出,则恢复为强制变体。如果请求,进程通常会退出。如果不是,这可能是有充分理由的。

于 2012-12-11T15:53:37.163 回答
0

你有一个无限循环的原因是因为它在一个while循环中,你应该把它放在一个if语句中。这样,它不会循环。如果一切都失败了,那么使用 /f。

于 2012-12-11T17:57:02.107 回答
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);
    }
}
于 2015-07-30T21:16:57.490 回答