杀死Excel进程而不保存



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

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

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

你有一个无限循环的原因是因为它处于一个while循环中,你应该把它放在一个if语句中。 这样,它就不会循环。 如果所有其他方法都失败,则使用/f。

试试这个

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);
    }
}

最新更新