杀死excel进程而不保存

时间:2012-12-11 15:51:22

标签: java excel kill

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

3 个答案:

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