2017-07-07 2 views
0

Je travaille sur un workflow où je dois pouvoir convertir par lots des fichiers CSV en fichiers DBF. Les données contenues dans les fichiers CSV peuvent toutes être affichées en tant que champs TEXT, puis enregistrées en tant que DBF. J'ai essayé d'obtenir n'importe quelle sortie possible en utilisant la ligne de commande à la fois dans Mac OS et Windows 7. Bien que j'ai eu un peu plus de succès dans Windows, je n'ai pas pu obtenir de conversion.Ligne de commande LibreOffice Convertir CSV en 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 

Donc, je devais avoir un --infilter sur la ligne de commande pour pouvoir effectuer la conversion, mais maintenant il ne fichier processus 1 et non fichier batch lorsque vous utilisez * .csv Alors, mon prochain l'obstacle est de surmonter cela.

Le ci-dessous permet d'expliquer plus en détail --infilters:

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

plus facile façon de trouver la séquence de filtres dont vous avez besoin est en suivant les étapes ci-dessous:

  1. ouvert le fichier CSV manuellement en utilisant LibreOffice et en spécifiant chaque détail dans l'Assistant d'importation
  2. Exécutez la macro ci-dessous et il vous montrera les options de filtre dans une zone de saisie, ainsi vous peut copier la chaîne à votre propre code

    Sous showFilterOptions args() Dim, i% args() = thisComponent.getArgs pour i = 0 à UBound (args()) si args (i). name = "FilterOptions" puis InputBox "", "", args (i) .value suivant End Sub

crédit code: https://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=14018

+0

Des messages d'erreur? Indiquez également quel terminal - bash, cmd.exe, powershell et cetera. –

+0

Si une partie de cette question est la réponse, veuillez déplacer cette partie vers une réponse. Voir [Puis-je répondre à ma propre question] (https://stackoverflow.com/help/self-answer). Formatez également le code en ajoutant quatre espaces à l'avant. –

Répondre

0

Les paramètres doivent être inversés. De https://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/:

soffice --headless --Convertir à <TargetFileExtension>: <NameOfFilter> file_to_convert.xxx

En utilisant les vieilles fenêtres invite de commande:

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

Cette volonté créer test.dbf dans le répertoire en cours, qui est peut-être C:\Users\jdavidson ou, s'il est exécuté en tant qu'administrateur, C:\Windows\system32. Pour imprimer le répertoire de travail, entrez pwd, puis dir pour voir le fichier.

Dans PowerShell, ajoutez "&  " devant pour exécuter LibreOffice. Entrez ensuite gci ou ls pour voir le fichier.

Assurez-vous qu'un processus LibreOffice n'est pas déjà en cours d'exécution en arrière-plan.

+0

Jim - Merci de me répondre. J'ai essayé d'utiliser ce qui précède et il ne produit toujours pas. J'ai essayé d'autres conversions pour voir si elles fonctionneraient et rien ne s'est produit non plus. J'utilise actuellement l'invite de commande. J'ai effectivement construit le script dans un fichier de commandes afin que je puisse exécuter le lot et le faire convertir automatiquement à la fin tous les documents dans un dossier spécifique. Il n'y a pas de codes d'erreur, mais cela ne fait rien. J'ai cherché pour déterminer si les dossiers sont placés ailleurs et ne peux rien trouver là non plus –

+0

J'ai pu obtenir ce qui suit pour travailler 'code'" C: \ Program Files (x86) \ LibreOffice 5 \ programme \ scalc. exe "--headless --convertir à dbf C: \ Utilisateurs \ jdavidson \ Desktop \ DBFCONVERT \ test.csv --outdir C: \ Utilisateurs \ jdavidson \ desktop' code' mais il ne fait que ramener les en-têtes et non les données sous les en-têtes. C'est donc un pas dans la bonne direction –

0

j'ai pu obtenir ce travail en utilisant le code ci-dessous:

"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 

S'il vous plaît noter, que je devais utiliser DBF et comprennent un champ de paramètre --infilter

Il y a deux sites en mon affichage original qui montre des scripts utiles et des informations d'infiltration pour aider les autres utilisateurs