首页 文章

LibreOffice命令行将CSV转换为DBF

提问于
浏览
0

我正在开发一个工作流程,我需要能够将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个文件而不是批处理文件所以,我的下一个障碍就是克服它 .

以下内容有助于更详细地解释 - 过滤器:

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

找到所需过滤器序列的更简单方法是按照下面列出的步骤操作:

  • 使用LibreOffice手动打开CSV并在导入向导中指定每个详细信息

  • 运行下面的宏,它会在输入框中显示过滤器选项,因此您可以将字符串复制到您自己的代码中

Sub showFilterOptions Dim args(),i%args()= thisComponent.getArgs for i = 0 to uBound(Args())if args(i).Name =“FilterOptions”then inputbox“”,“”,args(i) .value next End Sub

感谢代码:https://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=14018

2 回答

  • 0

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

    soffice --headless --convert-to <TargetFileExtension>:<NameOfFilter> 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进程尚未在后台运行 .

  • 0

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

    "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参数字段

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

相关问题