Metodi 5 per convertire i file in formato xlsx in CSV su Linux 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.