Открытие файла Excel с помощью программы по умолчанию - PullRequest
11 голосов
/ 22 января 2010

Моя программа успешно создает и заполняет файл Excel (.xls). После создания я хотел бы открыть новый файл в системной программе по умолчанию (в моем случае это Excel). Как мне этого добиться?

Для более старой программы, где я хотел открыть текстовый файл в Блокноте, я использовал следующее:

if (!Desktop.isDesktopSupported()) {
        System.err.println("Desktop not supported");
        // use alternative (Runtime.exec)
        return;
    }

    Desktop desktop = Desktop.getDesktop();
    if (!desktop.isSupported(Desktop.Action.EDIT)) {
        System.err.println("EDIT not supported");
        // use alternative (Runtime.exec)
        return;
    }

    try {
        desktop.edit(new File(this.outputFilePath));
    } catch (IOException ex) {
        ex.printStackTrace();
    }

Когда я пытаюсь использовать этот код для файла Excel, выдается следующая ошибка:

java.io.IOException: Failed to edit file:C:/foo.xls

Предложения

Ответы [ 3 ]

30 голосов
/ 22 января 2010

Попробуйте использовать Desktop.open () вместо Desktop.edit ():

Desktop dt = Desktop.getDesktop();
dt.open(new File(this.outputFilePath));

Если Desktop.open () недоступен, можно использовать сопоставление файлов Windows:

Process p = 
  Runtime.getRuntime()
   .exec("rundll32 url.dll,FileProtocolHandler " + this.outputFilePath);
0 голосов
/ 23 июня 2017

Самый простой и эффективный способ.

Desktop.getDesktop().open(new File("inputFilePath"));
0 голосов
/ 22 января 2010

Вы, вероятно, сделали Runtime.exec неправильно. Дайте этому взгляду, если это так.

Если вы просто хотите открыть файл Excel с помощью Java, я бы рекомендовал использовать JExcel API Энди Кхана. Возможно, использование этого с Swing JTable будет просто билетом.

...