Использование переменных среды для поиска каталога Excel и запуска скрипта - PullRequest
0 голосов
/ 02 ноября 2018

В Java мне нужно преобразовать файл .xlsb в .xlsx, и я делаю это с помощью команды console:

String command = "C:\\Program Files (x86)\\Microsoft Office\\Office12\\excelcnv.exe -oice "+fileName+" "+convertedFileName;
Runtime commandPrompt = Runtime.getRuntime();
try {           
    Process powershell = commandPrompt.exec(command);
    powershell.waitFor();
} catch (Exception e) { 
    System.out.println("Error converting file to XLSX");
    e.printStackTrace();
}

Но я хочу заменить путь к файлу Excel, потому что он может быть разным для каждой машины. Я пытаюсь использовать %ProgramFiles(x86)% вместо C:\\Program Files (x86), но это не работает, есть идеи, как заменить путь к excelcnv.exe и сделать его более универсальным?

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

String command = "excelcnv -oice" + fileName + "" + convertFileName; Должно работать, если exel находится в $ Path

0 голосов
/ 02 ноября 2018

Вы можете просто передать его в качестве аргумента программе. Предположим, что ваш класс находится в пакете org.stack.com , тогда вам нужно будет сделать следующее:

Используйте следующую строку в вашем коде (args[0] означает первый параметр, переданный из командной строки)

String command = args[0] + " -oice " + fileName + " " + convertedFileName;;

Для компиляции:

javac Test.java

Выполнить:

java org.stack.com.Test my_dynamic_path_here
0 голосов
/ 02 ноября 2018

Попробуйте использовать System.getenv ("FOO"), чтобы получить переменную среды

Для каталога программных файлов используйте это:

System.getenv("ProgramFiles");

или это для 32-битной папки на 64-битных ПК

System.getenv("%programfiles% (x86)"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...