Convertir en lot des fichiers xls en csv
peut s’avérer utile. On pourra en particulier préparer depuis des fichiers de catalogage ou de récolement produit sous excel, des csv bien encodés et propres au versement : en UTF-8, avec le séparateur ,
. 1
Dans la mesure du possible (i.e dans un monde parfait), il est évident qu’on produira directement un csv
bien formé (si toutefois on a LibreOffice, mais je rappelle qu’il existe en version portable), mais il peut être utile de travailler avec un fichier xls
ou odt
. En particulier si l’on a besoin de plusieurs feuilles pour préparer le travail de catalogage, ou de tri des données à verser.
Par exemple on peut avoir besoin de cataloguer / récoler tout un lot de documents iconographiques en vue d’une numérisation, mais vouloir dédoublonner la liste avant le versement, ou mettre de coté des documents sous droits, etc.
Le csv
produit avec la ligne de commande ne s’occupera que de la première feuille. Le fichier xls
reste inchangé.
Pour ce faire LibreOffice offre dans sa libairie soffice des filtres à utiliser directement depuis le terminal
, bien entendu on peut aussi écrire une macro, mais en cherchant une méthode de conversion par lot, je suis tombé sur celle-ci et elle est très rapide à utiliser.
La commande
LibreOffice doit être fermé, dans le terminal, on passe au début de la commande le chemin vers soffice
le filtre choisi (ici --convert to csv :"Text - txt - csv (StarCalc)"
), ses options, enfin le chemin vers les xls
et le chemin de sortie.
/Applications/LibreOffice.app/Contents/MacOS/soffice --convert-to csv:"Text - txt - csv (StarCalc)":44,34,76,,,,,, /Users/.../*.xls --outdir /Users/...
Le filtre
Celui qui nous intéresse est le suivant :
Text - txt - csv (StarCalc)
: Comma separated values
Les options du filtre
Les options à passer sont sibyllines, voir ici. Il y en a 9, elles consistent en un chiffre, séparé par des virgule, dans notre cas trois suffisent :
44
: code le séparateur,
34
: code le délimiteur de texte""
76
: code l’encodageUTF-8
Bonus
Mais Soffice permet de faire d’autres conversions bien pratiques.
Convertir en PDF
Avec ce filtre, on peut opérer la conversion en lot de documents odt
ou doc(x)
vers le format PDF
:
--convert-to pdf:writer_pdf_Export
/Applications/LibreOffice.app/Contents/MacOS/soffice --convert-to pdf:writer_pdf_Export /Users/...*.odt --outdir /Users/...
Convertir en TXT
Tout aussi utile la conversion d’un .doc
, .docx
, ou .odt
vers txt
pour obtenir une version débarrassée de tout balisage incongru (attention, les liens sautent aussi) :
--convert-to "txt:Text (encoded):UTF8" *.doc ou odt
/Applications/LibreOffice.app/Contents/MacOS/soffice--convert-to "txt:Text (encoded):UTF8" *.doc ou odt --outdir /Users/...
À vous de jouer.
-
Pour mémoire, Excel à tendance à utiliser le
;
– incompatible avec les outils de chargement des bases de données ou les plugins de chargement en masse de bibliothèque numériques comme celui d’Omeka par exemple. ↩