LINUX

5 métodos para convertir archivos de formato xlsx a CSV en la CLI de Linux

convertir xlsx csv cli

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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar