Convertir una hoja de Microsoft Excel (archivo XLS) a un archivo separado por comas (CSV) es relativamente fácil cuando se utiliza 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 usted tiene un archivo XLS y necesita llenar la base de datos después de formatear los datos. Convertir el XLS a CSV es la forma ideal aquí ya que el CSV es el formato que puede ser fácilmente manipulado en cualquier lenguaje, ya sea Shell, Perl, Ruby, Python o Java. En este post, veremos las mejores maneras de convertir el archivo XLS a CSV y también discutiremos las ventajas y desventajas 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 V.B. Vagner.
1.1 Cómo instalarlo:
Descargue la herramienta de aquí . Vaya a su directorio de descargas y destartalo. Puede utilizar los siguientes comandos (en caso de que tenga algún problema):
gunzip catdoc-0.94.2.tar.gz tar xvf catdoc-0.94.2.tar
Ahora tenemos un directorio catdoc-0.94.2 . Entra en este directorio y ejecuta los siguientes comandos para instalarlo:
./configure hacer make install
La instalación es un proceso fácil y no debe enfrentarse a ningún problema.
1.2 Cómo utilizarlo:
Hay varias opciones para ejecutar el comando. Le diré las opciones que mejor funcionan para la conversión a Microsoft Excel:
xls2csv -x «Path_of_Your_XLS_File» -s cp1252 -d 8859-1> «Path_of_Your_CSV_File»«.
Anote la opción » -s » y » -d » (representa la fuente y el destino). Estas opciones se utilizan para especificar qué codificación de caracteres se utiliza 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 utilizando el comando de ayuda.
xls2csv --help
1.3 Pros y contras:
Pros : Instalación directa
Contras : No hay conversión selectiva en el escenario de múltiples hojas, cubre todas las hojas presentes en el archivo xls (una solución 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, problemas con los campos de fecha (los campos de fecha se enredan a menudo), problemas con las comillas.
xls2csv (en Perl)
La segunda herramienta de la que vamos a hablar es un script en Perlxls2csv escrito por Ken Prows en Perl.
2.1 Cómo instalarlo:
Descargue el script aquí . Gunzip y tar lo hacemos como en la sección anterior y vamos al directorio extraído y usamos los siguientes comandos para instalarlo:
perl Makefile.PL
hacer
realizar una prueba
make install
Recuerde que este script Perl utiliza varios otros módulos Perl:
Locale::Recodificar Unicode::Hoja de cálculo del mapa::ParseExcel Texto::CSV_XS
Al instalar xls2csv, se producirá un error por el cual los módulos perl mencionados no han sido instalados. 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, entonces debe seguir las instrucciones dadas aquí para instalar un módulo Perl.
2.2 Cómo utilizarlo:
El siguiente comando puede ser usado 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 (media xls y csv) se utilizan para especificar los archivos de entrada y salida, mientras que b y a (media antes y después) se utilizan para especificar la codificación de caracteres correspondiente. Hemos utilizado la misma codificación de caracteres que en la herramienta anterior.
2.3 Pros y contras:
Pros : Bueno con conversión de caracteres de Europa occidental y campos de fecha, soporta conversión selectiva de múltiples hojas,
Contras : Es necesario instalar varios módulos Perl, la primera celda no debe estar vacía (de lo contrario se salta toda la fila), se enreda con las comillas
Hay un par de otras maneras también. Algunos scripts en Python y Java también están disponibles para su uso, pero no son tan buenos como los dos que se comentan aquí. Espero que el artículo resuelva tu problema. Las preguntas y sugerencias son siempre bienvenidas. Cheers 🙂