GNU/Linux >> Tutoriels Linux >  >> Linux

Convertir un fichier .xlsx (ms Excel) en .csv sur la ligne de commande avec des champs séparés par des points-virgules ?

Je me rends compte que ce n'est pas une question entièrement liée à unix/linux. Mais puisque c'est quelque chose que je vais faire sur Linux, j'espère que quelqu'un a une réponse.

J'ai un fichier excel en ligne (.xlsx ) qui est mis à jour périodiquement (par quelqu'un d'autre). Je veux écrire un script et le mettre en tant que cronjob afin de traiter cette feuille Excel. Mais pour ce faire, j'ai besoin de le convertir en un fichier texte (donc un .csv ) avec des colonnes séparées par des points-virgules. Malheureusement, il ne peut pas être séparé par des virgules car certaines colonnes contiennent des virgules. Est-il possible de faire cette conversion à partir du shell ? J'ai installé Open Office et je peux le faire en utilisant son interface graphique, mais je veux savoir s'il est possible de le faire à partir de la ligne de commande. Merci !

PS:J'ai aussi une machine Mac, donc si une solution peut fonctionner là-bas, c'est bien aussi. 🙂

Réponse acceptée :

OpenOffice est livré avec le programme unoconv pour effectuer des conversions de format sur la ligne de commande.

unoconv -f csv filename.xlsx

Pour des besoins plus complexes, vous pouvez analyser les fichiers XLSX avec Spreadsheet::XLSX en Perl ou openpyxl en Python. Par exemple, voici un script rapide pour imprimer une feuille de calcul sous forme de fichier CSV séparé par des points-virgules (avertissement :non testé, saisi directement dans le navigateur) :

perl -MSpreadsheet::XLSX -e '
    $ = "n"; $, = ";";
    my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
    my $worksheet = ($workbook->worksheets())[0];
    my ($row_min, $row_max) = $worksheet->row_range();
    my ($col_min, $col_max) = $worksheet->col_range();
    for my $row ($row_min..$row_max) {
        print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
    }
' filename.xlsx >filename.csv

Linux
  1. Astuce :convertissez des images en ligne de commande avec ImageMagick

  2. Comment convertir un fichier Excel en un fichier Calc à partir de la ligne de commande ?

  3. Une petite astuce :sélectionnez un fichier ou une ligne au hasard dans le fichier avec shuf

  4. Afficher un fichier tabulaire tel que CSV à partir de la ligne de commande

  5. openpyxl convertir CSV en EXCEL

Commande Linux Tail avec exemples

Commande Linux WC avec exemples

Convertir les noms de fichiers en minuscules via la ligne de commande Ubuntu

Comment envoyer un e-mail avec une pièce jointe à partir de la ligne de commande

Comment convertir xlsx au format CSV sous Linux

Utilisation de la commande Linux mv avec des exemples