使用默认程序打开Excel文件

12

我的程序可以成功地创建并填充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
建议?

您可以在此处找到类似的答案:https://dev59.com/t3RB5IYBdhLWcg3wr48V#550336 - jayaneetha
3个回答

31

尝试使用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);

@suman,也许可以使用xdg-open来打开给定文件类型的默认应用程序,请参见http://manpages.ubuntu.com/manpages/trusty/en/man1/xdg-open.1.html。 - RealHowTo

0

你可能在使用 Runtime.exec 时出现了错误。请查看this,看看是否是这种情况。

如果你只想用 Java 打开一个 Excel 文件,我建议使用 Andy Khan 的 JExcel API。也许将其与 Swing JTable 结合使用会更好。


是的。Jexcel API 打印的颜色比 JRXlsExporter 库更真实。 - StarCrafter

0

最简单和高效的方法。

Desktop.getDesktop().open(new File("inputFilePath"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接