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.