Cómo convertir un archivo XLS a CSV en la línea de comandos [Linux]

Cómo convertir un archivo XLS a CSV en la línea de comandos [Linux]

Convertir una hoja de Microsoft Excel (archivo XLS) en un archivo separado por comas (CSV) es relativamente fácil cuando se usa un producto de Office, pero podría ser una tarea tediosa para los programadores hacerlo en 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. Convertir XLS a CSV es la forma ideal aquí, ya que CSV es el formato que se puede manipular fácilmente en cualquier idioma, ya sea Shell, Perl, Ruby, Python o Java. En esta publicación, veremos las mejores formas de convertir el archivo XLS a CSV y también discutiremos los pros y los contras de usar estos métodos.

catdoc (en C)

La primera herramienta de línea de comandos de la que vamos a hablar es catdoc. La herramienta está escrita en C por VB Vagner.

1.1 Cómo instalarlo:

Descarga la herramienta de aquí. Vaya a su directorio de descargas y descomprímalo. Puede usar los siguientes comandos (en caso de que tenga problemas):

gunzip catdoc-0.94.2.tar.gz tar xvf catdoc-0.94.2.tar

Ahora tenemos un directorio catdoc-0.94.2. Vaya dentro de este directorio y ejecute los siguientes comandos para instalarlo:

./configure 
make 
make install

La instalación es un proceso fácil y no debería enfrentar ningún problema aquí.

1.2 Cómo usarlo:

Hay varias opciones para ejecutar el comando. Te diré las opciones que funcionan mejor para la conversión de Microsoft Excel:

xls2csv -x "Path_of_Your_XLS_File" -s cp1252 -d 8859-1 > "Path_of_Your_CSV_File"

Tenga en cuenta la opción «-s» y «-d» (significa origen y destino). Estas opciones se usan para especificar qué codificación de caracteres se usa en el archivo de origen y cuál sería la codificación de caracteres para el archivo de destino. Aquí he usado cpl1252 que es la codificación de caracteres de Microsoft y 8859-1 que se usa para la codificación de caracteres de Europa Occidental. Puede utilizar otras opciones disponibles mediante el comando de ayuda.

1.3 Ventajas y desventajas:

ventajas: Instalación directa

Contras: Sin conversión selectiva en el escenario de varias hojas, cubre todas las hojas presentes en el archivo xls (una solución alternativa sería especificar explícitamente un pie de página en cada hoja y luego usar la opción -b en el comando), problemas con pocos caracteres europeos, problema con campos de fecha (los campos de fecha están muy desordenados), se mete con comillas.

xls2csv (en Perl)

La segunda herramienta de la que vamos a hablar es un script Perl xls2csv escrito por Ken Prows en Perl.

2.1 Cómo instalarlo:

Descarga el guion aquí. Gunzip y tar como lo hicimos en la sección anterior y vaya al directorio extraído y use los siguientes comandos para instalarlo:

perl Makefile.PL 
make 
make test 
make install

Recuerde que este script de Perl utiliza otros módulos de Perl:

Locale::Recode Unicode::Map Spreadsheet::ParseExcel Text::CSV_XS

Al instalar xls2csv, dará un error de que los módulos perl mencionados no se han instalado. Le pedirá que descargue los módulos. Descargue e instale estos módulos cuando se le solicite. La instalación de todos estos módulos requiere privilegios de root. Si no tiene acceso de root, debe seguir las instrucciones que se dan aquí para instalar un módulo Perl.

2.2 Cómo usarlo:

El siguiente comando se puede usar para convertir Microsoft Excel a csv:

xls2csv -x "Path_of_Your_XLS_File" -b cp1252 -w WorkSheetName -c "Path_of_Your_CSV_File" -a 8859-1

Las opciones x y c (significa xls y csv) se usan para especificar los archivos de entrada y salida, mientras que b y a (significa antes y después) se usan para especificar la codificación de caracteres respectiva. Hemos utilizado la misma codificación de caracteres que en la herramienta anterior.

2.3 Pros y contras:

ventajas: Bueno con la conversión de caracteres de Europa occidental y los campos de fecha, admite la conversión selectiva de hojas múltiples,

Contras: Es necesario instalar varios módulos de Perl, la primera celda no debe estar vacía (de lo contrario, se salta toda la fila), interfiere con las comillas

Hay un par de otras formas también. Algunas secuencias de comandos en Python y Java también están disponibles para su uso, pero no son tan buenas como las dos que se analizan aquí. Espero que el artículo solucione tu problema. Las preguntas y sugerencias son siempre bienvenidas. Salud 🙂

Experto Geek - Tu Guía en Tendencias Tecnológicas