xlsx2csv ssconvert linux excel csv converter xlsx

ssconvert - xlsx to csv linux



Convertir xlsx a csv en Linux con lĂ­nea de comandos (11)

Como han dicho otros, libreoffice puede convertir archivos xls a csv. El problema para mí fue la selección de la hoja.

Este script de Python libreoffice hace un buen trabajo al convertir una sola hoja a CSV.

El uso es:

./libreconverter.py File.xls:"Sheet Name" output.csv

El único inconveniente (en mi parte) es que --headless no parece funcionar. Tengo una ventana LO que aparece por un segundo y luego se cierra.
Eso está bien conmigo, es la única herramienta que hace el trabajo rápidamente.

Estoy buscando una manera de convertir archivos xlsx a archivos csv en Linux.

No quiero usar PHP / Perl ni nada de eso, ya que estoy tratando de procesar varios millones de líneas, así que necesito algo rápido. Encontré un programa en los repositorios de Ubuntu llamado xls2csv pero solo convertirá archivos xls (Office 2003) (que estoy usando actualmente) pero necesito soporte para los archivos más nuevos de Excel.

¿Algunas ideas?


El uso de la aplicación de hoja de cálculo Gnumeric , que viene con una utilidad de línea de comandos llamada ssconvert, es realmente muy simple:

find . -name ''*.xlsx'' -exec ssconvert -T Gnumeric_stf:stf_csv {} /;

¡y tu estas listo!


En bash, utilicé este comando libreoffice para convertir todos mis archivos xlsx en el directorio actual:

for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done

Se ocupa de los espacios en el nombre de archivo.

Intenté nuevamente algunos años después, y no funcionó. Este hilo proporciona algunos consejos, pero la solución más rápida fue ejecutarse como root (o ejecutar un sudo libreoffice ). No elegante, pero rápido.

Utilice el comando scalc.exe en Windows


La aplicación de hoja de cálculo Gnumeric viene con una utilidad de línea de comandos llamada ssconvert que puede convertir entre una variedad de formatos de hoja de cálculo:

$ ssconvert Book1.xlsx newfile.csv Using exporter Gnumeric_stf:stf_csv $ cat newfile.csv Foo,Bar,Baz 1,2,3 123.6,7.89, 2012/05/14,, The,last,Line

Para instalar en Ubuntu:

apt-get install gnumeric

Para instalar en Mac:

brew install gnumeric


Otra opción sería usar R a través de una pequeña envoltura de bash para mayor comodidad:

xlsx2txt(){ echo '' require(xlsx) write.table(read.xlsx2(commandArgs(TRUE)[1], 1), stdout(), quote=F, row.names=FALSE, col.names=T, sep="/t") '' | Rscript --vanilla - $1 2>/dev/null } xlsx2txt file.xlsx > file.txt


Puedes hacer esto con LibreOffice:

libreoffice --headless --convert-to csv $filename --outdir $outdir

Por razones que no están claras para mí, es posible que necesites ejecutar esto con sudo. Puede hacer que LibreOffice funcione con sudo sin requerir una contraseña agregando esta línea a su archivo sudoers:

users ALL=(ALL) NOPASSWD: libreoffice


Puedes probar la hoja de cálculo Abrir / LibreOffice. No es una herramienta de línea de comandos, pero existe la posibilidad de que admitan xlsx. Ver www.libreoffice.org/features/calc/ . Menciona el soporte xlsx.


Si el archivo .xlsx tiene muchas hojas, se puede usar la .xlsx -s para obtener la hoja que desea. Por ejemplo:

xlsx2csv "my_file.xlsx" -s 2 second_sheet.csv

second_sheet.csv contendría datos de la segunda hoja en my_file.xlsx .


Si está bien para ejecutar la línea de comandos de Java, puede hacerlo con el Extractor de Excel de Apache POI HSSF. Tiene un método main que dice ser el extractor de línea de comandos . Este parece simplemente deshacerse de todo. Señalan a este ejemplo que se convierte a CSV . Tendría que compilarlo antes de poder ejecutarlo, pero también tiene un método main , por lo que no debería tener que hacer mucha codificación per se para que funcione.

Otra opción que podría volar pero que requerirá algún trabajo en el otro extremo es hacer que sus archivos de Excel le lleguen como Excel XML Data o XML Spreadsheet de las llamadas de MS que tengan ese formato en estos días. Abrirá todo un nuevo mundo de oportunidades para que usted lo divida como desee.


Si ya tiene un entorno de escritorio, estoy seguro de que Gnumeric / LibreOffice funcionaría bien, pero en un servidor sin cabeza (como los servicios web de Amazon), requieren docenas de dependencias que también necesita instalar.

Encontré esta alternativa de Python:

https://github.com/dilshod/xlsx2csv

$ easy_install xlsx2csv $ xlsx2csv file.xlsx > newfile.csv

Tomó 2 segundos para instalar y funciona como un encanto.

Si tiene varias hojas, puede exportar todas a la vez, o una a la vez:

$ xlsx2csv file.xlsx --all > all.csv $ xlsx2csv file.xlsx --all -p '''' > all-no-delimiter.csv $ xlsx2csv file.xlsx -s 1 > sheet1.csv

También se enlaza con varias alternativas creadas en Bash, Python, Ruby y Java.


Utilizar csvkit

in2csv data.xlsx > data.csv

Para más detalles consultar sus excelentes docs