2013-06-24 2 views
3

Если я пытаюсь открыть блокнот из приложения Java, тогда он откроет Notepad.But. Если я попытаюсь открыть Excel, то это даст мне исключение.Открыть Excel из Java-приложения

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.

+2

Используйте «Desktop.getDesktop(). Open (новый файл (« путь/to/spreadsheet.xls »));' из AWT API. Если вы продолжаете с помощью 'Process' .. Прочитайте (и реализуйте) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw- 1229-traps.html). Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и создает' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. –

ответ

0

в ехес метода дают fuuly определенный путь, на котором установлен ваш первенствует, а затем попытаться RunTime это хорошо, но лучше использовать ProcessBuilder

0

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 

Решение: использования полного имя ех файл

3

Если вы пытаетесь использовать Java, чтобы открыть файл Excel, а не просто открыть Excel, я предлагаю вам использовать класс API Desktop: http://docs.oracle.com/javase/6/docs/api/java/awt/Desktop.html

Этот класс будет использовать механизм обработки файлов ОС по умолчанию, поэтому он будет использовать MS Excel в Windows и Open Office в Linux.

+0

Мне не нужно открывать созданный файл Excel i.e e.xlsx. Но мне нужно открыть Microsoft Excel непосредственно из приложения Java, поскольку мы можем открыть Notepad. через Desktop API я не могу открыть Excel. –

0

Добавить Microsoft Office Excel путь к исполняемому файлу для например: Если каталог C: \ Program Files (x86) \ Microsoft Office \ Office14 имеет EXCEL.EXE затем добавить C: \ Program Files (x86) \ Microsoft Office \ Office14 для ваш путь к классу. Как добавить в classpath Нажмите here. Как только вы закончите, перезагрузите IDE, ваша программа должна работать.

1

Runtime.getRuntime().exec("some command"); делает то же самое, что «некоторая команда» будет делать в cmd. Итак, решение для открытия Excel вы должны попробовать.

try { 
    Runtime.getRuntime().exec("cmd /c start excel.exe"); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы