简体   繁体   English

Java - 使用runtime.getRuntime()。exec运行Excel

[英]Java - Run Excel using runtime.getRuntime().exec

try {
    Runtime.getRuntime().exec("excel C:\\file.xls");
} catch (IOException ex) {
    System.out.println(ex);
}

Doesn't work. 不行。 I have to put the full path of excel.exe in order to work. 我必须放入excel.exe的完整路径才能工作。 How can I make it generic (For any Excel Folders/Versions)? 如何使其通用(对于任何Excel文件夹/版本)? When I run the same line from OS with Windows Run (Start --> Run) it works. 当我使用Windows运行(开始 - >运行)从操作系统运行相同的行时,它可以工作。 Is there a code in Java to simulate Windows' Run command? Java中是否有代码来模拟Windows的Run命令?

Why don't you try with the Desktop class (api doc here ) introduced in JDK6 that has the method 为什么不尝试使用JDK6中引入的具有该方法的Desktop类( 此处为 api doc)

public void open(File file) throws IOException

which is documented as what you want to do: 记录为您想要做的事情:

Launches the associated application to open the file. 启动关联的应用程序以打开文件。 If the specified file is a directory, the file manager of the current platform is launched to open it. 如果指定的文件是目录,则启动当前平台的文件管理器以将其打开。

Of course this assumes that .xls extension is mapped by OS to Excel. 当然,这假设.xls扩展名由OS映射到Excel。 Then you can go with 然后你可以去

Desktop.getDesktop().open(new File("c:\\file.xls"));

我使用Runtime rt = Runtime.getRuntime().exec("cmd.exe /C start " + *filename*它适用于Windows平台

Call the Windows "start.exe" command instead of Excel directly. 直接调用Windows“start.exe”命令而不是Excel。 Start.exe appears to search paths, etc. However, it still may not find it if it's not in the path. Start.exe似乎搜索路径等。但是,如果它不在路径中,它仍然可能找不到它。

You might try using "cmd" instead of "excel", and then pass in an array of params. 您可以尝试使用“cmd”而不是“excel”,然后传入一组参数。

For easier debugging, you might also try using ProcessBuilder instead. 为了便于调试,您也可以尝试使用ProcessBuilder。 In my experience it's much nicer to work with: http://download.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html 根据我的经验,使用它更好: http//download.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM