• 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.

Crear programa Perl que lea archivos Excel

Notapor dasech » 2007-11-07 12:52 @578

¿Cómo crear un programa en Perl que lea celdas desde un archivo de Excel? Espero su respuesta. Soy nuevo en Perl. Saludos
dasech
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2007-11-07 12:46 @574

Publicidad

Notapor explorer » 2007-11-07 13:49 @617

Bienvenido a los foros de Perl en Español, daseh.

Yo te recomiendo el uso del módulo Spreadsheet::Read.

Es el que utilizo casi todos los días...
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

leer archivos excel en perl

Notapor dasech » 2007-11-07 13:57 @622

Algún pequeño ejemplo...

Saludos...
dasech
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2007-11-07 12:46 @574

Notapor explorer » 2007-11-07 14:48 @658

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use Spreadsheet::Read;
use strict;

my $ref = ReadData("test.xls");  # Leer fichero Excel
my $a3  = $ref->[1]{A3};         # Contenido de la celda A3 de la hoja 1
my $b5  = $ref->[1]{cell}[2][5]; # Contenido de la B5, de otra forma
print $ref->[1]{label}, "\n";    # Imprime el nombre de la primera hoja
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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

Leer Archivos Excel en Perl

Notapor dasech » 2007-11-07 22:29 @979

Muchísimas Gracias. Me ha servido de mucha ayuda... Saludos.
dasech
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2007-11-07 12:46 @574

Re: Crear programa Perl que lea archivos Excel

Notapor ThYr0N » 2009-11-04 10:01 @459

Debo ser muy inútil pero he intentado que funciona este paquete, SpreadSheet::Read y no hay manera...

Cuando intento instalarlo me sale que requiere el Spreadsheet-ParseExcel-0.55 y el Spreadsheet-ReadSXC-0.2; el ReadSXC requiere Compress::Zip y a la vez éste requiere compress::Raw::Zlib 2.017 cosa que no encuentro e instalo el 2.021, pero el ReadSXC me sigue requiriendo el 2.017.

¿Hay alguna manera de instalarlos todos a la vez sin que me explote la cabeza?

Necesito sacar unos datos de unos Excels y creo que esto es comodísimo.

GRACIAS
ThYr0N
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2009-04-14 07:53 @370

Re: Crear programa Perl que lea archivos Excel

Notapor explorer » 2009-11-04 11:09 @506

Si estás en UNIX/Linux, con ejecutar el comando

cpan Spreadsheet::Read

siendo root, vale. La primera vez que lo ejecutes te hará unas preguntas, pero luego, nada más. El comando se encargará de bajar, compilar e instalar todos los módulos necesarios. Más información.

Si estás en Windows, con el ActiveState, usa el PPM, como te indico en la guía.
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 ThYr0N » 2009-11-05 01:53 @120

OK, he corrido el CPAN, me ha devuelto
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Spreadsheet::Read is up to date (0.35).
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Pero ahora al intentar correr el programa me suelta.

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Parser for XLS is not installed at ./XXXXXX.pl line 12
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Falta instalar algún paquete más o alguna opción del Spreadsheet::Read?

Muchísimas gracias como siempre, explorer.

EDITO:

He estado mirando y para leer Excel dice que usa:

Spreadsheet::XLSX (http://search.cpan.org/dist/Spreadsheet-XLSX)
y
Spreadsheet::ParseExcel (http://search.cpan.org/dist/Spreadsheet-ParseExcel)

He probado a instalar los dos vía CPAN y el ParseExcel se instala bien pero el XLSX no hay manera de instalarlo. :S Me da errores cuando intenta hacer el make test >S. No sé si sera culpa de esto pero...

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/0____________use....NOK 2/2                                                
#   Failed test 'use Spreadsheet::XLSX;'
#   at t/0____________use.t line 12.
#     Tried to use 'Spreadsheet::XLSX'.
#     Error:  Can't locate OLE/Storage_Lite.pm in @INC (@INC contains: /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/arch /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
# BEGIN failed--compilation aborted at t/0____________use.t line 12.
# Compilation failed in require at /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib/Spreadsheet/XLSX.pm line 14.
# BEGIN failed--compilation aborted at /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib/Spreadsheet/XLSX.pm line 14.
# Compilation failed in require at (eval 12) line 2.
# BEGIN failed--compilation aborted at (eval 12) line 2.
# Looks like you failed 1 test of 2.
t/0____________use....dubious                                                
        Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 2
        Failed 1/2 tests, 50.00% okay
t/1_____loreyna126....Can't locate OLE/Storage_Lite.pm in @INC (@INC contains: /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/arch /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
Compilation failed in require at /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib/Spreadsheet/XLSX.pm line 14.
BEGIN failed--compilation aborted at /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib/Spreadsheet/XLSX.pm line 14.
Compilation failed in require at t/1_____loreyna126.t line 5.
BEGIN failed--compilation aborted at t/1_____loreyna126.t line 5.
# Looks like your test died before it could output anything.
t/1_____loreyna126....dubious                                                
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-3
        Failed 3/3 tests, 0.00% okay
t/2_____with_chart....Can't locate OLE/Storage_Lite.pm in @INC (@INC contains: /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/arch /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
Compilation failed in require at /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib/Spreadsheet/XLSX.pm line 14.
BEGIN failed--compilation aborted at /home/bio/.cpan/build/Spreadsheet-XLSX-0.12-1Bq9G5/blib/lib/Spreadsheet/XLSX.pm line 14.
Compilation failed in require at t/2_____with_chart.t line 5.
BEGIN failed--compilation aborted at t/2_____with_chart.t line 5.
# Looks like your test died before it could output anything.
t/2_____with_chart....dubious                                                
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-6
        Failed 6/6 tests, 0.00% okay
Failed Test          Stat Wstat Total Fail  List of Failed
-------------------------------------------------------------------------------
t/0____________use.t    1   256     2    1  2
t/1_____loreyna126.t  255 65280     3    6  1-3
t/2_____with_chart.t  255 65280     6   12  1-6
Failed 3/3 test scripts. 10/11 subtests failed.
Files=3, Tests=11,  0 wallclock secs ( 0.24 cusr +  0.04 csys =  0.28 CPU)
Failed 3/3 test programs. 10/11 subtests failed.
make: *** [test_dynamic] Error 255
  DMOW/Spreadsheet-XLSX-0.12.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports DMOW/Spreadsheet-XLSX-0.12.tar.gz
Running make install
  make test had returned bad status, won't install without force
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Es que no puedo ni usar el Spreadsheet::ParseExcel... ¡no sé que estoy haciendo mal! >S al intentar usar el ParseExcel (aun no habiendome dado problemas el CPAN para instalarlo) me sale esto...

Por lo que leo supongo que me faltan algunas librerías pero ¡ a saber qué >S argh !

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't locate OLE/Storage_Lite.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.10.0/Spreadsheet/ParseExcel.pm line 18.
Compilation failed in require at ./Read_xls.pl line 3.
BEGIN failed--compilation aborted at ./Read_xls.pl line 3.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
ThYr0N
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2009-04-14 07:53 @370

Re: Crear programa Perl que lea archivos Excel

Notapor explorer » 2009-11-05 04:59 @249

Cuando ejecutamos el comando cpan por primera vez nos hace una serie de preguntas. Las respuestas quedarán guardadas en el fichero CPAN/Config.pm dentro del árbol CPAN del directorio Perl de la instalación de tu sistema, o en el directorio raíz de tu cuenta de usuario.

Una de esas preguntas es sobre cuál debe ser el comportamiento de cpan en el caso de necesitar bajar los módulos de los que depende el módulo que queremos instalar. Se llama prerequisites_policy, que puede tener los valores 'follow' (instalarlos automáticamente), 'ask' (pedir una confirmación al usuario) o 'ignore' (no instalar nada). Yo siempre le tengo puesto a 'ask'.

Para comprobar el estado de este valor, tienes dos opciones: o localizas y cambias a mano el fichero CPAN/Config.pm de tu sistema (yo lo tengo en /usr/lib/perl5/5.8.8/CPAN/Config.pm en la máquina donde estoy ahora sentado) o usas el propio comando cpan.

En el primer caso te vale con asegurarte que tienes esta línea:

'prerequisites_policy' => q[ask],

mientras que para el segundo haces lo siguiente:

  1. Entras en el comando cpan.
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using bash Syntax Highlighting
    joaquin:~ # cpan

    cpan shell -- CPAN exploration and modules installation (v1.9402)
    Enter 'h' for help.

    cpan[1]>
    Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
  2. Ahora podríamos rehacer el cuestionario inicial de cpan con la ejecución de o conf init, pero si solo queremos cambiar un valor, basta con hacer o conf prerequisites_policy ask. Sale algo como esto:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using bash Syntax Highlighting
    cpan[1]> o conf prerequisites_policy ask
        prerequisites_policy [ask]
    commit: wrote '/usr/lib/perl5/5.8.8/CPAN/Config.pm'
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
  3. Ya podemos salir del entorno cpan:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using bash Syntax Highlighting
    cpan[2]> q
    Lockfile removed.
    joaquin:~ #
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ahora que estamos seguros que cpan nos preguntará por esos requisitos, empezaremos a instalar todos los módulos que sabemos que nos hacen falta:

cpan OLE:: Storage_Lite

En algunas ocasiones, el proceso puede fallar por:
* no somos el usuario root y por eso no nos deja instalar el módulo en el directorio Perl del sistema
* la librería necesita compilar alguna librería en C o C++, pero el make no encuentra ningún compilador disponible
* puede que el módulo sea incompatible con el sistema operativo que estemos usando
* el módulo ya está instalado

En este último caso, se puede realizar un forzado de la reinstalación:

cpan -fi OLE:: Storage_Lite
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 giote » 2009-11-09 18:12 @800

Hola.. estoy llevando a cabo una migración y también soy nuevo en el tema...

A mi particularmente sí me ha funcionado y puedo leer lo que hay en la hoja de cálculo.

Me gustaría saber cómo puedo determinar el número de filas útiles para mi script...

Es para poder hacer un for() y poder insertar en mi base de datos...

Muchas gracias.
giote
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-11-09 18:01 @792

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados