¿Hay alguna manera, idealmente usando la línea de comando, para convertir múltiples archivos .csv en una hoja de cálculo .xls de varias hojas?


14

¿Hay alguna manera, idealmente usando la línea de comando, para convertir múltiples archivos .csv en una hoja de cálculo .xls de varias hojas?

Si no hay una solución cli, sería bueno saber si hay una API que funcione, idealmente, awk o pascal, pero, en su defecto, en casi cualquier cosa.


ssconvert, mencionado por Maythux, es un comando complementario de Gnumeric, que se instalará de manera predeterminada en un sistema Ubuntu Desktop, pero no en una versión de servidor.
Arronical

Dado el hecho de que Excel cargará CSV en un .xlsarchivo que simplemente podría hacer:cat *.csv > file.xls
ceniza

prueba esto
Lety

1
ssconvert hace el truco perfectamente. Lo que necesitaba era tener cada archivo .csv en una hoja separada. Usar gato no logra eso. ssconvert lo hace.
Peter Brooks

@ash csv y xls son formatos diferentes, capturar un montón de csvs en un archivo y renombrarlo xls no funcionará en absoluto, ya que csvs no admite varias hojas, por lo que solo haría un csv largo, y también porque csv es un formato de texto plano, mientras que xls es un formato binario
chiliNUT

Respuestas:


16

Puede usar el comando ssconvert .

ssconvert example.csv example.xls

Para hacerlo para varios archivos, debe hacer un bucle bash sobre archivos csv y hacer el trabajo. Aquí una pista:

for i in *.csv; do ssconvert "$i" "${i%.*}".xls; done

EDITAR:

Para convertir y combinar en un solo archivo xls, también puede usar ssconvert.

ssconvert --merge-to=output.xls file1.csv file2.csv ....

o fácilmente

ssconvert --merge-to=output.xls *.csv 

1
Es vital citar las variables, ya que "$i" "${i%.*}".xls, de lo contrario, cualquier nombre de archivo que contenga un espacio romperá el comando (y posiblemente sobrescribirá un archivo no relacionado).
Paddy Landau
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.