【问题标题】:Open Excel from Java Application从 Java 应用程序打开 Excel
【发布时间】:2013-06-21 00:45:17
【问题描述】:

如果我想从 Java 应用程序打开记事本,那么它将打开记事本。但是如果我尝试打开 Excel,那么它就会给我异常。

try
    {
        Runtime.getRuntime().exec("excel");
    }
    catch (IOException e) 
    {
      e.printStackTrace();
    }

以下是例外:

java.io.IOException: Cannot run program "excel": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at OpenNotepad.main(OpenNotepad.java:18)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 5 more

当我开始->运行->Excel 然后它会打开excel。

【问题讨论】:

  • 使用来自 AWT API 的 Desktop.getDesktop().open(new File("path/to/spreadsheet.xls"));。如果坚持使用Process.. 阅读(并实施)所有When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec 并使用ProcessBuilder 构建Process。还要将String arg 拆分为String[] args 以说明本身包含空格的参数。

标签: java excel runtime


【解决方案1】:

如果您尝试使用 Java 打开 Excel 文件,而不仅仅是打开 Excel,建议您使用 Desktop API 类:http://docs.oracle.com/javase/6/docs/api/java/awt/Desktop.html

这个类将使用默认的操作系统文件处理机制,因此它将在 Windows 中使用 MS Excel,在 Linux 中使用 Open Office。

【讨论】:

  • 我不必打开创建的 Excel 文件,即 e.xlsx。但我必须直接从 Java 应用程序打开 Microsoft Excel,因为我们可以打开记事本。通过 Desktop API,我无法打开 Excel。
【解决方案2】:

Runtime.getRuntime().exec("some command"); 的作用与 cmd 中的“某些命令”相同。所以打开Excel的解决方案你应该试试这个。

try {
    Runtime.getRuntime().exec("cmd /c start excel.exe");
} catch (IOException e) {
    e.printStackTrace();
}

【讨论】:

    【解决方案3】:

    在 exec 方法中给出安装 excel 的完全限定路径,然后尝试 RunTime 很好,但最好使用 ProcessBuilder

    【讨论】:

      【解决方案4】:

      Runtime.getRuntime().exec() 与从命令行执行操作相同。

      在 Windows 操作系统中,有一个环境变量设置为 C:\Windows\System32 所有命令的exe都在这个路径中。

      当我在 cmd 中执行以下操作时,我得到了这个。

      C:\Users\bhaviksh>echo %PATH%
      D:\oracle\product\10.2.0\client_1\bin;C:\Windows\system32;C:\Windows;C:\Windows\
      System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\MySQL
      \MySQL Server 5.0\bin;C:\Program Files\cvsnt;C:\Program Files\TortoiseSVN\bin;C:
      \maven\bin
      

      解决方案:使用 exe 文件的完全限定名

      【讨论】:

        【解决方案5】:

        添加microsoft office excel可执行路径 例如: 如果目录 C:\Program Files (x86)\Microsoft Office\Office14 有 EXCEL.EXE,则将 C:\Program Files (x86)\Microsoft Office\Office14 添加到您的类路径中。 如何添加到类路径单击here。 完成后,重新启动 IDE,您的程序应该可以运行了。

        【讨论】:

          猜你喜欢
          • 2011-09-11
          • 1970-01-01
          • 2017-08-30
          • 2011-05-19
          • 1970-01-01
          • 2011-06-02
          • 1970-01-01
          • 1970-01-01
          • 2022-11-11
          相关资源
          最近更新 更多