LINUX

Metodi 5 per convertire i file in formato xlsx in CSV su Linux CLI

convertire xlsx csv cli

XLSX è un’estensione di file per un formato di file XML aperto utilizzato da Microsoft Excel. La conversione di un foglio di Microsoft Excel in un file separato da virgola (CSV) è relativamente molto semplice durante l’utilizzo della riga di comando. La situazione può verificarsi quando si dispone di un file XLS ed è necessario popolare il database da esso dopo aver formattato i dati. Esistono diversi metodi da riga di comando per convertire file di diversi formati.

1) Programma di calcolo Gnumeric

Gnumeric è un programma informatico per sistemi operativi Unix e Unix-like distribuito sotto la GNU General Public License. Memorizza le sue informazioni creando file e riaprendoli durante una sessione futura. Può importare ed esportare dati di fogli di calcolo in e da più formati, inclusi CSV, Microsoft Excel, HTML, OpenDocument, Quattro Pro e LaTex.

Gnumeric non è presente di default nel repository di centos 7, per prima cosa è necessario installare l’ultima versione di lux. Prima scaricalo

# wget http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
--2017-10-13 23:32:19-- http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
Resolving repo.iotti.biz (repo.iotti.biz)... 156.54.7.11
Connecting to repo.iotti.biz (repo.iotti.biz)|156.54.7.11|:80... connected.

Ora puoi installare la versione lux

# rpm -Uvh lux-release-7-1.noarch.rpm 
warning: lux-release-7-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 53e4e7a9: NOKEYCSV
Preparing... ################################# [100%]
Updating / installing...
 1:lux-release-7-1 ################################# [100%]

Con lux-release installato, ora possiamo installare gnumeric tramite package

# yum install gnumeric
Loaded plugins: fastestmirror, langpacks
lux | 2.9 kB 00:00:00 
lux/7/primary_db | 1.0 MB 00:00:05 
Loading mirror speeds from cached hostfile
 * base: ftp.hosteurope.de
 * epel: mirror.liquidtelecom.com
 * extras: ftp.hosteurope.de
 * updates: ftp.hosteurope.de
Resolving Dependencies
--> Running transaction check
---> Package gnumeric.x86_64 1:1.10.10-2.el7.lux.1 will be installed

Ora puoi usare il comando ssconvert del foglio di calcolo gnumeric per convertire il file

# ssconvert book.xlsx file.csv
Using exporter Gnumeric_stf:stf_csv

È possibile visualizzare il file ora

# cat file.csv 
fichier,
paul,
nathan,couvert
couloir,file
road,

2) Convertitore xlsx2csv

xlsx2csv converter è un’applicazione Python in grado di convertire un batch di file XLSX/XLS in formato CSV. Puoi specificare esattamente quali fogli verranno convertiti. Se hai più fogli, xlsx2csv offre la possibilità di esportare tutti i fogli contemporaneamente o uno per uno.

Per installarlo, devi già avere python installato. Quindi puoi fare quanto segue:

# easy_install xlsx2csv
Searching for xlsx2csv
Reading https://pypi.python.org/simple/xlsx2csv/
Best match: xlsx2csv 0.7.3
Downloading https://pypi.python.org/packages/4c/56/4c7f595525839710ab563c8e5a48226021111c1324b1460e603256f7665c/xlsx2csv-0.7.3.tar.gz#md5=b9cffbbe815259987237135f99658c63
Processing xlsx2csv-0.7.3.tar.gz

Ora puoi convertire il tuo file xlsx

# xlsx2csv book.xlsx > convert.csv

È possibile controllare il contenuto del file

# cat convert.csv 
fichier,
paul,
nathan,couvert
couloir,file
road,

Per impostazione predefinita, il comando xlsx2csv converte solo il primo foglio, anche se il file contiene più fogli. Fortunatamente offre la possibilità di convertire tutti i fogli o scegliere quello da convertire. Puoi usare alcuni parametri interessanti:

  • -a, --all per esportare tutti i fogli
  • -d DELIMITER per delimitatore di colonna in csv
  • -p SHEETDELIMITER per il delimitatore di fogli utilizzato per separare i fogli, passare '' se non hai bisogno di delimitatore, o 'x07' o 'f' per il feed modulo (predefinito: ‘——–‘)
  • -s SHEETID per la conversione del numero di foglio

Ad esempio, se desideri convertire solo un foglio specifico

# xlsx2csv class.xlsx -s 2 > sheet2.csv

Puoi controllare

# cat sheet2.csv 
sheet2
take
linux
centos

Ora se vuoi convertire l’intero foglio puoi fare come di seguito

# xlsx2csv class.xlsx --all > allsheet.csv

Puoi controllare il contenuto come di seguito

# cat allsheet.csv 
-------- 1 - Sheet1
fichier
road
-------- 2 - Sheet2
sheet2
take
linux
centos
-------- 3 - Sheet3
devops
script
lxd

Puoi vedere che il delimitatore predefinito aiuta a conoscere i fogli.

3) strumento csvkit

csvkit è una libreria Python ottimizzata per lavorare con i file CSV. È un bellissimo strumento per manipolare, organizzare, analizzare e lavorare con i dati utilizzando il formato csv. È molto facile e veloce. Viene utilizzato tramite il proprio terminale in2csv comando che converte una varietà di formati di file comuni tra cui xls, xlsx e larghezza fissa in formato CSV.

# pip install csvkit
Collecting csvkit
 Using cached csvkit-1.0.2.tar.gz
Collecting agate>=1.6.0 (from csvkit)

Ora puoi convertire come segue:

# in2csv Classeur2.xlsx > book3.csv

4) non conv

OpenOffice viene fornito con il programma unoconv per eseguire conversioni di formato sulla riga di comando. È presente di default se è installato openoffice. Puoi usare il manuale

# unoconv --help
usage: unoconv [options] file [file2 ..]

Convert from and to any format supported by LibreOffice

unoconv options:
  -c, --connection=string  use a custom connection string
  -d, --doctype=type       specify document type
                             (document, graphics, presentation, spreadsheet)
  -e, --export=name=value  set export filter options
                             eg. -e PageRange=1-2
  -f, --format=format      specify the output format
  -i, --import=string      set import filter option string
                             eg. -i utf8
  -l, --listener           start a permanent listener to use by unoconv clients
  -n, --no-launch          fail if no listener is found (default: launch one)
  -o, --output=name        output basename, filename or directory
      --pipe=name          alternative method of connection using a pipe
  -p, --port=port          specify the port (default: 2002)
                             to be used by client or listener
      --password=string    provide a password to decrypt the document
  -s, --server=server      specify the server address (default: 127.0.0.1)
                             to be used by client or listener
      --show               list the available output formats
      --stdout             write output to stdout
  -t, --template=file      import the styles from template (.ott)
  -T, --timeout=secs       timeout after secs if connection to listener fails
  -v, --verbose            be more and more verbose (-vvv for debugging)

Il comando è in grado di convertire tra diversi formati di file. per impostazione predefinita, converte in pdf. Significa che dovresti indicare il formato desiderato se non vuoi avere un formato indesiderato. Quindi, per convertire in csv con il comando unoconv, è necessario utilizzare due parametri principali:

  • -f che indica la richiesta del formato del file di output finale
  • -o per indicare il nome e il percorso del file convertito
# unoconv -f csv -o class2.csv Classeur2.xlsx

Puoi controllare il contenuto

# cat class2.csv 
fichier,
,
,couvert
,file
road,

Nota che la seconda riga del file xlsx originale è vuota, ecco perché hai la virgola sulla seconda riga del file csv.

5) Libreoffice senza testa

Avviando il software LibreOffice dalla riga di comando è possibile assegnare vari parametri, con l’aiuto dei quali è possibile influenzare le prestazioni. È possibile attraverso modalità senza testa che ti aiuta ad avviare LibreOffice nella riga di comando senza alcun componente della GUI. Ti dà la possibilità di convertire i file in alcuni formati di cui hai bisogno. Quindi puoi usarlo per convertire i file xlsx in csv. Devi utilizzare il formato finale indicato (csv) con--convert-to parametro seguito dal file da convertire come segue:

# libreoffice --headless --convert-to csv book.xlsx --outdir conv/
convert /home/admin/Desktop/book.xlsx -> /home/admin/Desktop/conv/book.csv using filter : Text - txt - csv (StarCalc)

Ora puoi controllare il file

# cat conv/book.csv 
fichier,
paul,
nathan,couvert
couloir,file
road,

Puoi convertire direttamente alcuni file xlsx come segue:

# libreoffice --headless --convert-to csv --outdir conv/ *.xlsx
convert /home/admin/Desktop/book.xlsx -> /home/admin/Desktop/conv//book.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/Classeur1.xlsx -> /home/admin/Desktop/conv//Classeur1.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/Classeur2.xlsx -> /home/admin/Desktop/conv//Classeur2.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/class.xlsx -> /home/admin/Desktop/conv//class.csv using filter : Text - txt - csv (StarCalc)

Puoi sembrare convertito come di seguito

[root@centos7-srv Desktop]# ls conv
book.csv class.csv Classeur1.csv Classeur2.csv

È possibile controllare il contenuto di un file

# cat conv/Classeur2.csv 
fichier,
,
,couvert
,file
road,

Abbiamo visto i vari strumenti disponibili su Linux per convertire qualsiasi formato di file xlsx in file csv da riga di comando. Puoi decidere di convertire il file in odt o pdf ed è possibile con unoconv e libreoffice headless. Vale la pena provarlo Strumento mugnaio che converte tra formati e altro ancora.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close