web-dev-qa-db-fra.com

Comment diviser un fichier tableur ODS en fichiers csv par feuille sur le terminal?

Je souhaite scinder une feuille de calcul (ods ou xlsx) en plusieurs fichiers csv, un pour chaque feuille de la feuille de calcul.

Je voudrais faire cela sans lancer une application graphique et de préférence dans un one liner.

Des idées?

Bien que le doublon lié offre une solution possible dans l’une des réponses (mais pas dans celle acceptée) et a été utile. La solution ne fonctionne pas avec les fichiers ODS comme je l’avais demandé et j’estime que la question est suffisamment différente.

7
Bruni

libreoffice peut convertir des documents à partir d’un script (c’est-à-dire en mode sans interface graphique sans ouvrir une interface graphique). Pour convertir un format de feuille de calcul au format CSV, sa forme la plus simple ressemblerait à, par exemple.

libreoffice --convert-to csv PATH/TO/YOUR.ODS

Cependant, cela prend juste la première feuille de votre document et la convertit, en ignorant toutes les autres. Il manque aussi une option pour sélectionner la feuille à convertir, malheureusement.


Nous allons donc avoir besoin d'un outil externe, comme xlsx2csv . Il s'agit d'un script open source Python (2 et 3) qui convertit les fichiers XLSX en fichiers CSV et prend en charge l'extraction de toutes les feuilles dans des fichiers séparés.

Ubuntu est déjà livré avec Python installé, mais vous devez peut-être d'abord installer pip, son gestionnaire de paquets. Je vais pour Python 3, mais vous pouvez changer toutes les commandes ci-dessous pour l'exécuter avec 2 également:

Sudo apt install python3-pip

Ensuite, vous pouvez installer xlsx2csv avec pip3 dans le répertoire du paquet de votre utilisateur, en utilisant

pip3 install --user xlsx2csv

Ensuite, vous pouvez trouver le script exécutable dans ~/.local/bin/xlsx2csv.


Maintenant, si vous ne l'avez pas déjà au format XLSX, convertissons cette feuille de calcul ODS avec libreoffice:

libreoffice --convert-to xlsx PATH/TO/YOUR.ods

Ensuite, nous utilisons xlsx2csv pour extraire toutes les feuilles. Il créera un dossier OUTPUTFOLDER et placera tous les SHEETNAME.csv extraits dans cet emplacement:

~/.local/bin/xlsx2csv -a YOUR.xlsx OUTPUTFOLDER
5
Byte Commander

Utiliser xls2csv (pour convertir . Outil XLS ) de catdoc paquet installer Sudo apt install catdoc:

xls2csv -b '
' Excel.xls | awk '{print >"sheet"NR}' RS='\n\n'

Ce xls2csv -b ' ' Excel.xls lit le fichier MS-Excel et place son contenu sous forme de données séparées par des virgules sur la sortie standard. Avec -b STRING, nous indiquons que les feuilles doivent être délimitées avec quels caractères (ou chaîne; nous avons défini une nouvelle ligne ici).


Utilisez xlsx2csv (pour convertir . XLSX ); installer Sudo apt install xlsx2csv:

xlsx2csv -s 0 Excel.xlsx |
    awk '!/,/ { nextSheet++; next } { print >"sheet"nextSheet }'

-s 0 signifie imprimer toutes les feuilles.

4
αғsнιη

Jeter un coup d'œil à

ssconvert -O 'separator=:: format=raw quoting-mode=never' -S x.ods  out%n.txt

\ merci {Bruni}

  • -O 'separator= format= ...'est utilisé pour contrôler les détails du format csv
  • -S pour créer un fichier de sortie différent pour chaque feuille
2
JJoao