2017-07-07 106 views
0

我正在開發一個工作流程,我需要能夠將CSV文件批量轉換爲DBF文件。 CSV文件中的數據可以全部輸出爲TEXT字段,然後保存爲DBF。我試圖在Mac OS和Windows 7中使用命令行獲得任何輸出。雖然我在Windows中取得了一些成功,但我無法獲得任何轉換。LibreOffice命令行將CSV轉換爲DBF

"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能夠做轉換,但現在它只能處理1文件,而不是使用批處理文件* .CSV時所以,我的下一個障礙是要克服這一點。

以下有助於更詳細地解釋--infilters:

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

任何簡單的方法來找到你所需要的過濾器序列是按照下列步驟操作:

  1. 開放CSV手動使用LibreOffice並在導入嚮導中指定每個細節
  2. 運行下面的宏,它會向您顯示輸入框中的過濾器選項,讓您可以在字符串複製到自己的代碼

    子showFilterOptions 昏暗ARGS(),則i% ARGS()= thisComponent.getArgs 對於i = 0至UBOUND(參數()) 如果ARGS(i)中。名稱= 「FilterOptions」 然後輸入框 「」, 「」,ARGS(ⅰ)。價值 下 結束子

信用操作的代碼:https://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=14018

+0

任何錯誤信息?也請告訴哪個終端 - bash,cmd.exe,powershell等等。 –

+0

如果這個問題的一部分是答案,那麼請將該部分移到答案。請參閱[我可以回答我自己的問題](https://stackoverflow.com/help/self-answer)。還可以通過在前面添加四個空格來更好地格式化代碼。 –

回答

0

的參數需要被反轉。從https://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/

soffice --headless - 轉換到<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

吉姆 - 謝謝你回到我身邊。我嘗試使用上述,它仍然不輸出。我嘗試了其他轉換,看看它們是否可以工作,也沒有發生任何事情。我目前正在使用命令提示符。實際上,我將腳本構建到一個批處理文件中,這樣我就可以運行該批處理並使其自動轉換爲特定文件夾內的所有文檔。沒有錯誤代碼,但它什麼也沒有做。我已經搜索過,以確定文件是否被放置在其他地方,並找不到任何東西 –

+0

我能夠得到以下工作'代碼'「C:\ Program Files文件(x86)\ LibreOffice 5 \ program \ scalc。 exe「 - 無頭文件 - 轉換爲dbf C:\ Users \ jdavidson \ Desktop \ DBFCONVERT \ test.csv --outdir C:\ Users \ jdavidson \ desktop」代碼「,但它只帶來頭部而不是數據在標題下方。所以這是朝着正確方向邁出的一步 –

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參數字段

有兩個網站我原來的帖子,顯示有用的腳本和infilter信息,以幫助其他用戶