【问题标题】:LibreOffice Command Line Convert CSV to DBFLibreOffice 命令行 将 CSV 转换为 DBF
【发布时间】:2017-07-09 09:40:19
【问题描述】:

我正在研究一个需要能够将 CSV 文件批量转换为 DBF 文件的工作流程。 CSV 文件中的数据都可以输出为 TEXT 字段,然后保存为 DBF。我尝试在 Mac OS 和 Windows 7 中使用命令行获得任何可能的输出。虽然我在 Windows 中取得了一些成功,但我无法进行任何转换。

   "C:\Program Files (x86)\LibreOffice 5\program\scalc.exe" --convert-to dbf --

infilter="csv:44,34,76,1,1/2/2/2/3/2/4/2/5/2/6/2/7/2/8/2/9/2/10/2/11/2/12/2/13/2/14/2/15/2/16/2/17/2/18/2/19/2/20/2/21/2/22/2/23/2/24/2/25/2/26/2/27/2/28/2/29/2/30/2/31/2/32/2

/33/2/34/2/35/2/36/2/37/2/38/2/39/2/40/2/41/2/42/2/43/2/44/2/45/2/46/2/47/2/48/2/49/2/50/2/51/2/52/2/53/2/54/2/55/2/56/2/57/2/58/2/59/2/60/2/61/2/62/2/63/2/64/2/65/2/66/2/67/2

/68/2/69/2/70/2/71/2,0,false,false" C:\Users\jdavidson\Desktop\DBFCONVERT\*.csv --outdir C:\Users\jdavidson\desktop\complete

所以,我需要在命令行上有一个 --infilter 才能进行转换,但现在使用 *.csv 时它只会处理 1 个文件而不是批处理文件 所以,我的下一个障碍是在那之上。

下面有助于更详细地解释 --infilters:

https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options#Filter_Options_for_Lotus.2C_dBase_and_DIF_Filters

按照以下列出的步骤,找到您需要的过滤器序列的任何更简单的方法:

  1. 使用 LibreOffice 手动打开 CSV 并在导入向导中指定每个细节
  2. 运行下面的宏,它会在输入框中显示过滤器选项,因此您可以将字符串复制到自己的代码中

    子 showFilterOptions 暗 args(),i% args() = thisComponent.getArgs 对于 i = 0 到 uBound(Args()) if args(i).Name = "FilterOptions" then inputbox "","",args(i).value 下一个 结束子

归功于代码:https://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=14018

【问题讨论】:

  • 任何错误信息?还请告诉哪个终端——bash、cmd.exe、powershell 等等。
  • 如果该问题的一部分是答案,那么请将该部分移至答案。见Can I answer my own question。还可以通过在前面添加四个空格来更好地格式化代码。

标签: command-line libreoffice libreoffice-calc


【解决方案1】:

参数需要颠倒。来自https://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/

soffice --headless --convert-to : file_to_convert.xxx

使用旧的 Windows 命令提示符:

"C:\Program Files (x86)\LibreOffice 5\program\scalc.exe" --headless --convert-to dbf C:\Users\jdavidson\Desktop\DBFCONVERT\test.csv

这将在当前目录中创建test.dbf,可能是C:\Users\jdavidson,或者如果以管理员身份运行,则为C:\Windows\system32。要打印工作目录,请输入pwd,然后输入dir 以查看文件。

在powershell中,在前面添加“&”来执行LibreOffice。然后输入gcils查看文件。

确保 LibreOffice 进程尚未在后台运行。

【讨论】:

  • 吉姆 - 感谢您回复我。我尝试使用上面的,它仍然没有输出。我已经尝试过其他转换,看看它们是否会起作用,但那里也没有发生任何事情。我目前正在使用命令提示符。我实际上将脚本构建到一个批处理文件中,以便我可以运行批处理并让它最终自动转换特定文件夹中的所有文档。没有错误代码,但它什么也没做。我已经搜索以确定文件是否被放置在其他地方并且在那里也找不到任何东西
  • 我能够得到以下工作code"C:\Program Files (x86)\LibreOffice 5\program\scalc.exe" --headless --convert-to dbf C: \Users\jdavidson\Desktop\DBFCONVERT\test.csv --outdir C:\Users\jdavidson\desktop code 但它只带来标题而不是标题下方的数据。所以这是朝着正确方向迈出的一步
【解决方案2】:

我能够使用以下代码使其工作:

"C:\Program Files (x86)\LibreOffice 5\program\scalc.exe" --convert-to DBF --infilter="csv:44,34,76,1,1/2/2/2/3/2/4/2/5/2/6/2/7/2/8/2/9/2/10/2/11/2/12/2/13/2/14/2/15/2/16/2/17/2/18/2/19/2/20/2/21/2/22/2/23/2/24/2/25/2/26/2/27/2/28/2/29/2/30/2/31/2/32/2/33/2/34/2/35/2/36/2/37/2/38/2/39/2/40/2/41/2/42/2/43/2/44/2/45/2/46/2/47/2/48/2/49/2/50/2/51/2/52/2/53/2/54/2/55/2/56/2/57/2/58/2/59/2/60/2/61/2/62/2/63/2/64/2/65/2/66/2/67/2/68/2/69/2/70/2/71/2/72/2/73/2/74/2/75/2/76/2/77/2/78/2/79/2/80/2/81/2/82/2/83/2/84/2/85/2/86/2/87/2/88/2/89/2/90/2/91/2/92/2/93/2/94/2/95/2/96/2/97/2/98/2/99/2/100/2/101/2/102/2/103/2/104/2/105/2/106/2/107/2/108/2/109/2/110/2/111/2/112/2/113/2/114/2/115/2/116/2/117/2/118/2/119/2/120/2/121/2/122/2/123/2/124/2/125/2/126/2/127/2/128/2/129/2/130/2/131/2/132/2/133/2/134/2/135/2/136/2,0,false,false" C:\Users\jdavidson\Desktop\DBFCONVERT\57826001_JQSAMPLE.csv --outdir C:\Users\jdavidson\desktop\complete

请注意,我需要使用 DBF 并包含一个 --infilter 参数字段

我的原始帖子中有两个网站显示有用的脚本和过滤信息以帮助其他用户

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 2011-04-23
    • 2012-02-16
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2010-12-23
    相关资源
    最近更新 更多