使用默认程序打开 Excel 文件

发布于 2024-08-18 22:28:47 字数 776 浏览 8 评论 0原文

我的程序成功创建并填充了 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

建议?

My program successfully creates and fills a Excel(.xls) file. Once created, I would like the new file to open in the system's default program (Excel in my case). How can I achieve this?

For an older program where I wanted to open a txt file in Notepad, I used the following:

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

When I try to use this code for an Excel file it gives me the following error:

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

Suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

热情消退 2024-08-25 22:28:47

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

Try to use Desktop.open() instead of Desktop.edit() :

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

If Desktop.open() is not available then the Windows file association can be used :

Process p = 
  Runtime.getRuntime()
   .exec("rundll32 url.dll,FileProtocolHandler " + this.outputFilePath);
Hello爱情风 2024-08-25 22:28:47

您可能错误地执行了 Runtime.exec。给 这个 看看是否是这样案件。

如果您只想使用 Java 打开 Excel 文件,我建议使用 Andy Khan 的 JExcel API。也许将其与 Swing JTable 一起使用就足够了。

You probably did the Runtime.exec incorrectly. Give this a look to see if that's the case.

If you just want to open an Excel file with Java, I'd recommend using Andy Khan's JExcel API. Perhaps using that with a Swing JTable will be just the ticket.

沫离伤花 2024-08-25 22:28:47

最简单有效的方法。

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

The most simple and efficient way.

Desktop.getDesktop().open(new File("inputFilePath"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文