[Résolu][Calc] Convertir ods en csv, via ligne de commande

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

[Résolu][Calc] Convertir ods en csv, via ligne de commande

Message par martinbrait »

Bonjour à tous,

Comment convertir des fichiers ? ???
Rien de toute la documentation, fournie ci-dessous, n'a fonctionné pour moi.
:cry:

J'ai déjà essayé, sans succès de convertir des fichiers ods en csv.
Est-ce que je peux également choisir les fichiers que je convertis ?


"C:\Program Files\LibreOffice 4\program\scalc.exe" --headless -convert-to csv:"Text - txt - csv (StarCalc)":59,34,76,,,,true -outdir converted MySpreadsheet.ods

C:\Program Files\OpenOffice.org 3\program\soffice.exe -headless macro:///MyLibrary.MyModule.MyMacro(arg1, arg2, arg3)

"C:\Program Files\LibreOffice 4\program\soffice.exe" --headless --convert-to xls --outdir "C:\DBA\scripts\CSV-to-Excel" "C:\DBA\scripts\CSV-to-Excel\CSV_file.csv"

aide libre office :
https://help.libreoffice.org/Common/Sta ... ameters/vi


sortie en PDF:

Variantes pour produire des fichiers PDF

--convert-to pdf:writer_pdf_Export
--convert-to pdf:calc_pdf_Export
--convert-to pdf:draw_pdf_Export
--convert-to pdf:impress_pdf_Export
--convert-to pdf:writer_web_pdf_Export

Entrées autres qu'au format DOCX

--infilter="HTML Document" # for HTML input
--infilter="MediaWiki" # for MediaWiki input
--infilter="Text CSV" # for CSV spreadsheet input
--infilter="Microsoft PowerPoint 2007/2010 XML" # for PPTX input
--infilter="Microsoft PowerPoint 97/2000/XP" # for PPT input
--infilter="Windows Metafile" # for WMF input
--infilter="Enhanced Metafile" # for EMF input
--infilter="Scalable Vector Graphics" # for SVG input
--infilter="Microsoft Excel 2007/2010 XML" # for XLSX input
--infilter="Microsoft Excel 97/2000/XP" # for XLS input
--infilter="Microsoft Excel 95" # for some XLS input
--infilter="Microsoft Excel 5.0" # for some XLS input

Sorties autres que PDF

Sorties dans des formats spéciaux :

--convert-to html:HTML
--convert-to html:draw_html_Export # force "Draw" to generate the HTML
--convert-to mediawiki:MediaWiki_Web # generate MediaWiki output
--convert-to csv:"Text - txt - csv (StarCalc)" # generate CSV spreadsheet output
--convert-to pptx:"Impress MS PowerPoint 2007 XML" # generate PPTX
--convert-to ppt:"MS PowerPoint 97" # generate PPT
--convert-to wmf:impress_wmf_Export # force "Impress" to generate the WMF
--convert-to wmf:draw_wmf_Export # force "Draw" to generate the WMF
--convert-to emf:impress_emf_Export # force "Impress" to generate the EMF
--convert-to emf:draw_emf_Export # force "Draw" to generate the EMF
--convert-to svg:impress_svg_Export # force "Impress" to generate the SVG
--convert-to svg:draw_svg_Export # force "Draw" to generate the SVG
--convert-to xlsx:"Calc MS Excel 2007 XML" # generate XLSX
--convert-to xls:"MS Excel 97" # generate XLS like Excel 97
--convert-to xls:"MS Excel 95" # generate XLS like Excel 95
--convert-to xls:"MS Excel 5.0/95" # generate XLS like Excel 5.0/95

Code : Tout sélectionner

'Convertir des fichiers ODS, en multiples feuilles csv séparées :

    'Convertir ODS en XLSX
    'libreoffice --headless --convert-to xlsx ./* --outdir ./spreadsheet-xlsx/
    'Convertir XLSX en CSV

    cd ./spreadsheet-xlsx/

    for i in 2 3 4; do
    for j in $(ls -1 | sed -e 's/\..*$//'); do
    xlsx2csv -s $i $j.xlsx ../spreadsheet-csv/$j-$i.csv
    done
    done


'Auteur : Mikeyy

Exportation massive de feuilles au format CSV

1. Création d'un fichier".bat" pour windows.

for /f "delims=|" %%f in ('dir /b .\ODSDIRECTORY') do "C:\Program Files (x86)\LibreOffice 4\program\soffice.exe" --headless --convert-to csv:"Text - txt - csv (StarCalc)":"59,ANSI,1" --outdir .\CSV ".\ODSDIRECTORY\%%f"
exit



Détail de l'effet produit :
- recherche dans tous les répertoires
- pour chaque fichier du répertoire, exécute les commandes après "do"
- "delims=|" takes into account files with spaces in name, but files with brackets will not pass, and probably also files with other strange characters
- "C:\Program Files (x86)\LibreOffice 4\program\soffice.exe" Le chemin complet vers LO ou AOO, si soffice.exe n'est pas dans la variable globale
--convert-to csv:"Text - txt - csv (StarCalc)":"59,ANSI,1" type de conversion souhaitée
--outdir .\CSV '(Si vous souhaitez un répertoire de sortie différent)
- ".\ODSDIRECTORY\%%f" this points to files which will be converted, if you remove "" 'nom de fichier ou de répertoire, espaces interdits.

2. Je concatène tous les fichiers csv, dans un seul fichier csv
copy .\CSV\*.csv merged.csv

Comment faire pour exporter les feuilles, 2nd, 3rd, 4th...
Actuellement, le projet est capable d'exporter uniquement la première feuille du classeur.

Ressource utile :
https://ask.libreoffice.org/en/question ... mand-line/
https://forum.openoffice.org/en/forum/v ... 20&t=87890
https://wiki.openoffice.org/wiki/Docume ... er_Options
https://ask.libreoffice.org/en/question ... ds-quoted/

Je n'ai aucune idée à propos de unoconv, commande python,
qui me retourne un message d'erreur :
unoconv_erreur.JPG


Pourriez-vous me sortir de ce mauvais pas, s'il-vous-plaît ?

Merci et à bientôt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par martinbrait le 18 mars 2017 13:24, modifié 1 fois.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26024
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Convertir ods en csv, via ligne de commande

Message par Dude »

Salut,

N'utilisant pas les dérivés, je ne répondrais que pour OpenOffice.
martinbrait a écrit :C:\Program Files\OpenOffice.org 3\program\soffice.exe -headless macro:///MyLibrary.MyModule.MyMacro(arg1, arg2, arg3)
D'une part, ce chemin n'est plus valable pour la version 4 et d'autre part, il s'agit d'une ligne de commande pour une version anglaise.
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Calc] Convertir ods en csv, via ligne de commande

Message par martinbrait »

Bonjour Dude,

Merci pour tes explications détaillées.
Je vais me concentrer sur l'appel de macro,
que tu as sélectionné, jusqu'à que ça fonctionne pour moi.

Avec ce principe, il faut probablement
écrire les routines de conversion de fichier,
dans un fichier libreoffice, de macros dédiées.
Il faut enregistrer ce fichier sur un emplacement partagé,
afin de l'appeler depuis un programme vba externe,
ou depuis une ligne de commande.
N'est-ce pas ?

Merci et à bientôt !
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26024
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Calc] Convertir ods en csv, via ligne de comman

Message par Dude »

martinbrait a écrit :afin de l'appeler depuis un programme vba externe
Pourquoi vouloir faire du gloubi-boulga ?
VBA = Microsoft
Vouloir mixer un produit propriétaire et fermé est d'une incohérence totale avec le logiciel libre.

Extraire du contenu de document ODF peut se faire en ligne de commande sans avoir à passer par OpenOffice :
http://beaussier.com/sections/viewtopic.php?f=7&t=1583
Un CSV restant un fichier texte avec délimiteurs, la conversion se fera tout aussi simplement.
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Résolu][Calc] Convertir ods en csv, via ligne de comman

Message par martinbrait »

Bonjour Dude,
casimir_officiel.jpg
Explication de texte :

Je dois maintenir et automatiser un workflow sous access :
  • 26 bases de données,
    450 tables
    4500 champs
Du coup, je fais tourner l'existant sur la
bureautique propriétaire et je n'envisage
pas de reconstruire (à moins de tout casser,
et de ne pas dormir la nuit)

Merci et à bientôt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !