5 métodos para convertir archivos de formato xlsx a CSV en la CLI de Linux
XLSX es una extensión de archivo para un formato de archivo de hoja de cálculo XML abierto utilizado por Microsoft Excel. Convertir una hoja de Microsoft Excel en un archivo separado por comas (CSV) es relativamente fácil cuando se utiliza la línea de comandos. La situación puede llegar cuando tiene un archivo XLS y necesita llenar la base de datos después de formatear los datos. Existen algunos métodos en la línea de comandos para hacer la conversión de archivos de diferentes formatos.
1) programa de hoja de cálculo Gnumeric
Gnumeric es un programa de hoja de cálculo para sistemas operativos Unix y similares distribuidos bajo la Licencia Pública General GNU. Almacena su información creando archivos y reabriendo estos archivos durante una sesión futura. Puede importar y exportar datos de hojas de cálculo hacia y desde múltiples formatos, incluidos CSV, Microsoft Excel, HTML, OpenDocument, Quattro Pro y LaTex.
Gnumeric no está presente de forma predeterminada en el repositorio de su centos 7, primero debe instalar la última versión de lux. Primero descárgalo
# 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.
Ahora puedes instalar el lanzamiento de 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 instalado, ahora podemos instalar gnumeric a través del paquete
# 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
Ahora puede usar el comando ssconvert de la hoja de cálculo gnumeric para convertir el archivo
# ssconvert book.xlsx file.csv
Using exporter Gnumeric_stf:stf_csv
Puedes visualizar el archivo ahora
# cat file.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
2) convertidor xlsx2csv
xlsx2csv El convertidor es una aplicación de Python que es capaz de convertir un lote de archivos XLSX/XLS al formato CSV. Puede especificar exactamente qué hojas se convertirán. Si tiene varias hojas, xlsx2csv ofrece la posibilidad de exportar todas las hojas a la vez o una a la vez.
Para instalarlo, necesita tener Python ya instalado. Luego, puede proceder de la siguiente manera:
# 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
Ahora puedes convertir tu archivo xlsx
# xlsx2csv book.xlsx > convert.csv
Puede comprobar el contenido del archivo.
# cat convert.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
De forma predeterminada, el comando xlsx2csv convierte solo la primera hoja, incluso si su archivo contiene varias hojas. Afortunadamente, ofrece la posibilidad de convertir todas las hojas o elegir la que desea convertir. Puedes usar algunos parámetros interesantes:
-a, --all
para exportar todas las hojas-d DELIMITER
para delimitador de columnas en csv-p SHEETDELIMITER
para delimitador de hoja usado para separar hojas, pasar''
si no necesita delimitador, o'x07'
o'f'
para avance de formulario (predeterminado: ‘——–‘)-s SHEETID
para que el número de hoja se convierta
Por ejemplo, si desea convertir solo una hoja específica
# xlsx2csv class.xlsx -s 2 > sheet2.csv
Puedes comprobar
# cat sheet2.csv
sheet2
take
linux
centos
Ahora, si desea convertir toda la hoja, puede hacer lo siguiente
# xlsx2csv class.xlsx --all > allsheet.csv
Puede comprobar el contenido de la siguiente manera
# cat allsheet.csv
-------- 1 - Sheet1
fichier
road
-------- 2 - Sheet2
sheet2
take
linux
centos
-------- 3 - Sheet3
devops
script
lxd
Puede ver que el delimitador predeterminado ayuda a conocer las hojas.
3) herramienta csvkit
csvkit es una biblioteca de Python optimizada para trabajar con archivos CSV. Es una buena herramienta para manipular, organizar, analizar y trabajar con datos, utilizando el formato csv. Es muy ligero y rápido. Se utiliza a través del terminal con su in2csv dominio que convierte una variedad de formatos de archivo comunes, incluidos xls, xlsx y ancho fijo en formato CSV.
# pip install csvkit
Collecting csvkit
Using cached csvkit-1.0.2.tar.gz
Collecting agate>=1.6.0 (from csvkit)
Ahora puedes convertir de la siguiente manera:
# in2csv Classeur2.xlsx > book3.csv
4) unoconv
OpenOffice viene con el programa unoconv para realizar conversiones de formato en la línea de comandos. Está presente por defecto si está instalado openoffice. Puedes usar el manual
# 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)
El comando es capaz de convertir entre varios formatos de archivo. por defecto, convierte en pdf. Significa que debe indicar el formato deseado si no desea tener un formato no deseado. Entonces, para convertir en csv con el comando unoconv, debe usar dos parámetros principales:
-f
que indica la solicitud del formato final del archivo de salida-o
para indicar el nombre y la ruta del archivo convertido
# unoconv -f csv -o class2.csv Classeur2.xlsx
Puedes consultar el contenido
# cat class2.csv
fichier,
,
,couvert
,file
road,
Tenga en cuenta que la segunda fila de nuestro archivo xlsx original está vacía, por eso tiene la coma en la segunda línea del archivo csv.
5) Libreoffice sin cabeza
Al iniciar el software LibreOffice desde la línea de comandos, puede asignar varios parámetros con los que puede influir en el rendimiento. Es posible a través de la modo sin cabeza que lo ayudan a iniciar LibreOffice en la línea de comandos sin ningún componente de interfaz gráfica. Le brinda la posibilidad de convertir archivos en algunos formatos según lo necesite. Entonces, puede usarlo para convertir archivos xlsx en csv. Debe usar el formato final indicado (csv) con el--convert-to
parámetro seguido por el archivo para convertir de la siguiente manera:
# 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)
Ahora puedes revisar el archivo.
# cat conv/book.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
Puede convertir directamente algunos archivos xlsx como se muestra a continuación:
# 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)
Puedes ver el convertido como se muestra a continuación.
[root@centos7-srv Desktop]# ls conv
book.csv class.csv Classeur1.csv Classeur2.csv
Puede comprobar el contenido de un archivo
# cat conv/Classeur2.csv
fichier,
,
,couvert
,file
road,
Hemos visto las diferentes herramientas disponibles en Linux para convertir cualquier formato de archivo xlsx en un archivo csv en la línea de comandos. Puede decidir convertir el archivo en odt o pdf y es posible con unoconv y libreoffice headless. Vale intentarlo herramienta molinera que hace conversión entre formatos y más.