【问题标题】:Running "libreoffice" command through Java to convert file to csv通过 Java 运行“libreoffice”命令将文件转换为 csv
【发布时间】:2017-09-16 16:33:16
【问题描述】:

请任何人帮助我通过 java 进程或进程构建器运行以下命令。

Process pr = Runtime.getRuntime().exec("libreoffice  --headless ---convert-to csv:\"Text - txt - csv (StarCalc)\":\"09,76,0,1,,0\" --outdir " + f1.getParent()  + " " + fullFileName);

这给了我“未知命令-”的输出

我使用了流程构建器:

ArrayList<String> cmd = new ArrayList<String>();
        cmd.add("libreoffice");
        cmd.add("--headless");
        cmd.add("--convert-to");
        cmd.add("csv:\"Text - txt - csv (StarCalc)\":09,76,0,1,,0");
        cmd.add("--outdir");
        cmd.add(path);
        cmd.add(fullFileName);

        ProcessBuilder ps = new ProcessBuilder(cmd);
        ps.redirectErrorStream(true);


        Process pr = ps.start();  

它给我错误“未知参数 csv:\"Text - txt - csv (StarCalc)\":09,76,0,1,,0"

【问题讨论】:

  • 您提到了“---convert-to csv”,但在字符串中您添加了“--convert-to csv”
  • 还尝试将 csv 添加到“---convert-to”部分。 "---convert-to csv:\"文本 - txt - csv (StarCalc)\":09,76,0,1,,0"
  • 09 之前你还缺少\"。还缺少需要动态创建命令的空格
  • 谢谢大家,尝试了所有的可能性和建议,\"Text - txt - csv (StarCalc)\" 是真正的罪魁祸首,如果可能,请任何人提供工作代码

标签: java csv command-line process libreoffice


【解决方案1】:

我来晚了,但答案可能对某人仍然有用。您只需删除 Text - txt - csv (StarCalc) 周围的引号即可:

ProcessBuilder builder = new ProcessBuilder("libreoffice", "--headless",
        "--convert-to", "csv:Text - txt - csv (StarCalc):09,76,0,1,,0",
        "--outdir", path, fullFileName);
builder.redirectErrorStream(true);
Process process = builder.start();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2018-05-04
    • 2013-03-22
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多