XLSX es una extensión de archivo para un formato de archivo de hoja de cálculo XML abierto utilizado por Microsoft Excel. Conversión de Microsoft Excel hoja a un archivo separado por comas (CSV) es relativamente muy fácil al usar la línea de comando. 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 los diferentes formatos de archivos.
1) programa de hoja de cálculo Gnumeric
Gnumeric es un programa de hoja de cálculo para Unix y sistemas operativos similares a Unix distribuidos bajo la Licencia Pública General GNU. Almacena su información creando archivos y volviendo a abrir estos archivos durante una sesión futura. Puede importar y exportar datos de hojas de cálculo desde y hacia múltiples formatos, incluidos CSV, Microsoft Excel, HTML, OpenDocument, Quattro Pro y LaTex.
Gnumeric no está presente de forma predeterminada en el repositorio de centos 7, primero debe instalar la última versión de lux. Primero descárgalo
# wget https://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
--2017-10-13 23:32:19-- https://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 puede instalar la versión 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 Converter es una aplicación de Python que es capaz de convertir un lote de archivos XLSX / XLS a formato CSV. Puede especificar exactamente qué hojas se convertirán. Si tiene varias hojas, xlsx2csv le da la posibilidad de exportar todas las hojas a la vez, o una a la vez.
Para instalarlo, debe 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
Puedes 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 desee convertir. Puedes usar algunos parámetros interesantes:
-a, --all
para exportar todas las hojas-d DELIMITER
para el delimitador de columnas en csv-p SHEETDELIMITER
para el delimitador de hoja utilizado para separar hojas, pase''
si no necesita delimitador, o'x07'
o'f'
para alimentación de formulario (predeterminado: ‘——–‘)-s SHEETID
para que el número de hoja se convierta
Para example, 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 consultar 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, usando el formato csv. Es muy ligero y rápido. Se utiliza a través del terminal con su comando in2csv que convierte una variedad de formatos de archivo comunes, incluidos xls, xlsx y de 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 puede 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 comando. Está presente de forma predeterminada 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 puede convertir entre varios formatos de archivo. de forma predeterminada, 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, necesita usar dos parámetros principales:
-f
que indica la solicitud el 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 del modo sin cabeza que le ayudan a iniciar LibreOffice en la línea de comandos sin ningún componente de interfaz gráfica. Te da la posibilidad de convertir archivos en algunos formatos que necesites. Entonces, puede usarlo para convertir archivos xlsx en csv. Debe utilizar el formato final (csv) indicado con el--convert-to
parámetro seguido del archivo para convertir como se muestra a continuación:
# 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 consultar el archivo
# cat conv/book.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
Puede convertir directamente algunos archivos xlsx de la siguiente manera:
# 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 mirar el convertido de la siguiente manera
[root@centos7-srv Desktop]# ls conv
book.csv class.csv Classeur1.csv Classeur2.csv
Puede verificar 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 Miller que hace conversión entre formatos y más.