• Publicidad

Crear programa Perl que lea archivos Excel

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Crear programa Perl que lea archivos Excel

Notapor jacks » 2011-04-12 10:38 @485

Entonces será ese el problema, puesto que uso el 2007. De todas formas lo renombré a .xls en vez de .xlsx y con el programa de búsqueda sí funciono pero con el otro no. ¿No habría ninguna opción para que funcionase con este tipo?
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Publicidad

Re: Crear programa Perl que lea archivos Excel

Notapor explorer » 2011-04-12 10:54 @496

Como se comenta en un mensaje mío, en este hilo, ¿instalaste el módulo Spreadsheet::XLSX?

El problema no está en que sea del año 2007, sino que está en formato XLSX. Como se indica en el segundo párrafo de Spreadsheet::ParseExcel, no es capaz de leer los ficheros Excel 2007 Open XML (XLSX), por lo que recomienda usar el Spreadsheet::XLSX.

Spreadsheet::Read usará ese módulo, en caso de que la extensión sea .xlsx.

(Una vez más, Microsoft fastidiando a todo el mundo.)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Crear programa Perl que lea archivos Excel

Notapor jacks » 2011-04-12 11:08 @505

Muchas gracias, ese era el problema. Yo pensaba que ya lo tenía instalado, el módulo, pero parece ser que no. Me sigue dando este problema pero por lo demás ya me saca por pantalla el resultado.
Adjuntos
Dibujo.JPG
Dibujo.JPG (14.18 KiB) Visto 1061 veces
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Crear programa Perl que lea archivos Excel

Notapor explorer » 2011-04-12 11:10 @507

Cambia A3 por 'A3' (las comillas).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Crear programa Perl que lea archivos Excel

Notapor jacks » 2011-04-12 11:24 @516

No eso no es sigue igual pero no pasa nada ya lo voy a mirar yo aver porque es.Y lo ultimo que te queria preguntar sobre este tema es seria mas eficiente usar el Excel2txt y despues con perl cargar a la base de datos las urls que tengo o desde Excel seria igual de eficiente sin tener que cambiar a un archivo txt?

Muchas gracias por todo.
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Crear programa Perl que lea archivos Excel

Notapor explorer » 2011-04-12 11:30 @521

Ya lo encontré... Has escrito

my $a3 = $ref->[1]{A3}, "\n";

debería ser

my $a3 = $ref->[1]{A3};

En cuanto a la pregunta, si puedes hacerlo todo desde un solo ejecutable, es más eficiente. Es decir, reducir el número de pasos manuales, y aumentar al máximo la automatización.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Crear programa Perl que lea archivos Excel

Notapor elistraus » 2013-03-05 14:17 @636

Interesante el tema. Justo estoy viendo esto mismo.

Tengo una pregunta: a mi me llega un archivo xls o xlsx y desde ahí tengo que sacar solo dos campos numéricos que no tienen fórmula ni formateado. Entonces quería preguntar si se puede, mediante Perl transformar este archivo xls o xlsx en csv y así desde ahí buscar lo que se necesita?.

Claro que después tengo que volver a generar el xls agregando una hoja y un campo más a la información que me han mandado.

Saludos
elistraus
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-10-31 23:37 @026

Re: Crear programa Perl que lea archivos Excel

Notapor MARKO » 2013-03-05 15:25 @684

Si estás usando Windows y Excel a mi parecer la mejor opción es Win32::Ole. Chécalo.

Su mayor ventaja es que no mapea todo el archivo en la memoria RAM sino que manipulas a Excel para leer/editar el archivo .xls/.xlsx.

Saludos.
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982

Re: Crear programa Perl que lea archivos Excel

Notapor explorer » 2013-03-05 16:19 @722

elistraus escribiste:Tengo una pregunta: a mi me llega un archivo xls o xlsx y desde ahí tengo que sacar solo dos campos numéricos que no tienen fórmula ni formateado. Entonces quería preguntar si se puede, mediante Perl transformar este archivo xls o xlsx en csv y así desde ahí buscar lo que se necesita?
Precisamente, la gracia de estos módulos es que no necesitas hacer esas transformaciones. Simplemente, el módulo se encarga de traducir el contenido propietario de Micro$oft en estructuras Perl, y así es facilísimo extraer información.

Yo suelo usar Spreadsheet::Read, que lee varios formatos (realmente, depende de otros módulos), y así se puede escribir programas independientes del formato de los archivos. Así, cuando el cliente se canse de tener que pagar licencias de Micro$oft Office por culpa del Excel, y pasarse a usar OpenOffice o LibreOffice, entonces solo tendremos que editar una línea en nuestros programas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Crear programa Perl que lea archivos Excel

Notapor elistraus » 2013-03-06 09:14 @426

Muchas gracias, explorer. Sabes que tengo un error en la lectura del xls, a ver si me ayudas por qué pasa esto.

Utilizo el Spreadsheet::Read y al abrir el archivo no tiene problemas, pero al pasar el nombre del archivo dentro de una variable, me da error, a lo mejor es algo básico que no estoy tomando en cuenta.

Aquí no tengo problemas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %con_tdm = configuracion->conexion_tandemD();                        #hash de conexión
  2. my $ref = ReadData('matrimonioTest.xls', cell => 0, atrr => 1);         #lectura del xls
  3.                 die "ERROR: xls no encontrado" if not $ref;
  4.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Acá quiero sacar siempre el último. Al archivo alojado lo guardo en una variable y se lo paso a la función ReadData y me da error
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $xls = `ls -ltR *.xls|head -n 1|tail -n 1|awk '{print \$NF}'`;       #último xls
  2. print $xls;
  3. my %con_tdm = configuracion->conexion_tandemD();                        #hash de conexión
  4. my $ref = ReadData($xls, cell => 0, atrr => 1);         #lectura del xls
  5.                 die "ERROR: xls no encontrado" if not $ref;
  6.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y el error
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ perl get_bdoro.pl
matrimonioTest.xls
Unsuccessful stat on filename containing newline at /usr/local/share/perl/5.14.2/Spreadsheet/Read.pm line 589, <ARCHIVO> line 1.
ERROR: xls no encontrado at get_bdoro.pl line 13, <ARCHIVO> line 1.
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Le puse comillas dobles pero da el mismo error.
A ver si me puedes ayudar.

Saludos y gracias
elistraus
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-10-31 23:37 @026

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 28 invitados