11

我的程序成功创建并填充了一个 Excel(.xls) 文件。创建后,我希望在系统的默认程序(在我的情况下为 Excel)中打开新文件。我怎样才能做到这一点?

对于我想在记事本中打开 txt 文件的旧程序,我使用了以下内容:

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

建议?

4

3 回答 3

30

尝试使用 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);
于 2010-01-22T01:54:28.540 回答
0

您可能错误地执行了 Runtime.exec。看看这个,看看是不是这样。

如果您只想使用 Java 打开 Excel 文件,我建议使用 Andy Khan 的 JExcel API。也许将它与 Swing JTable 一起使用将只是门票。

于 2010-01-22T01:34:56.320 回答
0

最简单有效的方法。

Desktop.getDesktop().open(new File("inputFilePath"));
于 2017-06-23T10:54:09.693 回答