• Publicidad

Carga de información de Excel a base de datos

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

Re: Carga de información de Excel a base de datos

Notapor Hector Gutierrez » 2011-05-03 13:16 @594

Ya compiló el programa, utilicé use Date::Calc; al ejecutar el programa me marca error en la siguiente instrucción my $ref = ReadData("paso02052011.xls"); Undefined subroutine &main::ReadData called at line 19.

El uso de Date::Calc lo tomé de un comentario que encontré en CVS_XS.pm y hace mención al manejo de hojas de Excel.

¿Con qué instrucción logro la lectura del archivo de Excel?

P.D. Lamento el comentario de gritar, si se refiere al usar mayúsculas lo lamento, tenía prendido el bloqueo de mayúsculas.
Hector Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-04-15 14:49 @659

Publicidad

Re: Carga de información de Excel a base de datos

Notapor explorer » 2011-05-03 13:24 @600

:!: :!: :!: :!: :!: :!: :!: :!:
:?: :?: :?: :?: :?: :?: :?: :?:

¿Qué tiene que ver un módulo para hacer cálculos con fechas, con leer hojas de Excel? :cry:

No se puede programar al estilo de prueba/error, porque en Perl, aunque es más probable que con otros lenguajes, te será muy difícil hacer lo que quieres.

¿Has visto la sección Sinopsys del módulo Spreadsheet::Read? Si quieres leer un fichero Excel tendrás que hacer algo como esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Spreadsheet::Read;
  2. my $ref = ReadData("paso02052011.xls");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


:arrow: El mensaje de error dice que no sabe lo que es la función ReadData(). O dicho de otra manera: que no has cargado el módulo Spreadsheet::Read con el 'use'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Carga de información de Excel a base de datos

Notapor Hector Gutierrez » 2011-05-03 18:02 @793

Realicé pruebas con use Spreadsheet::Read; y no lo reconoce. Accedí a la página de CPAN llamada Spreadsheet-Read-0.41 y la descargué, la coloqué como una carpeta adicional de C:/Perl/lib con el nombre de Spreadsheet-Read-0.41 y con el PPM traté de instalar 2 archivos: el Makefile.pl y el Read.pm. En ambos casos la respuesta fue de 0 paquetes y no funcionó. ¿Alguna ayuda?
Hector Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-04-15 14:49 @659

Re: Carga de información de Excel a base de datos

Notapor explorer » 2011-05-03 18:30 @812

Sí: que arranques el PPM gráfico y busques Spreadsheet::Read en su lista. Si has añadido el repositorio de trouchelle.com, deberá aparecer. Lo seleccionas para instalar.

Luego, como vas a leer ficheros Excel con extensión .xls, deberás instalar Spreadsheet::ParseExcel: Lo mismo: lo buscas en la lista, y lo seleccionas para instalar.

Luego, pulsas el botón de instalación.

(¿No has visto mi guía de uso del PPM?)

Atención: en la página de trouchelle.com viene indicado, por cada módulo, en qué versión de Perl funciona.

Primero debes saber qué versión de Perl estás usando (la v5.8, la v5.10, la v5.12...). Luego vas a la página de trouchelle y buscas por Spreadsheet::Read según la versión de Perl: en la página principal, en la parte de abajo, pulsa en la letra 'S' en una de las tres filas, o escribes Spreadsheet-Read y en el desplegable seleccionas la versión de Perl.

Eso te lleva a una página donde te indicará, en colores, qué versión del módulo debes bajarte para que funcione en tu sistema.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Carga de información de Excel a base de datos

Notapor Hector Gutierrez » 2011-05-03 20:34 @899

Leí tu guía de uso de PPM y la seguí al pie de la letra, busqué en la lista de paquetes y no encontré Spread…, instalé la versión de Trouchelle.com para Perl v5.12 ya que tengo instalado ActivePerl 5.12.3 y tampoco apareció el Spreadsheet; entré a la página de Trouchelle, busqué como me señalaste en la letra S y encontré 3 opciones, una de ella dice ERROR, otra en CONSTRUCCIÓN y la tercera OK que corresponde a SpreadsheetSXC.ppm; lo cargué desde el PPM y no lo muestra en la lista de paquetes, incluso le mandé un correo a Serguei Trouchelle preguntándole por qué no se puede instalar el manejo de las hojas de Excel.

He tratado de encontrar la respuesta pero ha sido muy desgastante, si tienes otra sugerencia la apreciaré.
Hector Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-04-15 14:49 @659

Re: Carga de información de Excel a base de datos

Notapor explorer » 2011-05-04 04:49 @242

Serguei no te dirá por qué no hay soporte de Excel para v5.12. A lo sumo te dirá que te pongas en contacto con el autor del propio módulo Spreadsheet::Read. Él solo se ocupa de bajarlos desde CPAN y compilarlos para Windows.

En cuanto a la instalación Spreadsheet::Read v0.40 sobre Perl v5.12:
http://trouchelle.com/perl/ppmrepview.pl?id=60329&v=12

verás que no marca errores de instalación, solo un aviso. Así que esa versión sí que puedes instalar, junto con Spreadsheet::ParseExcel v0.57.

Es muy extraño que no te salga Spread... en el listado de paquetes.

¿Seguro que has añadido el repositorio de trouchelle Y has pulsado en el botón "Ver todos los paquetes"?

Imagen

Finalmente, si no puedes instalar Spreadsheet::Read, tendrás que usar Spreadsheet::ParseExcel.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Carga de información de Excel a base de datos

Notapor Hector Gutierrez » 2011-05-04 13:02 @584

Ya pude instalar Spreadsheet::Read, gracias, me sirvió afrontar esta situación.

Tengo una hoja de Excel .xls que tiene 5 columnas; la segunda es fecha con formato DD/MM/AAAA; al ejecutar el programa me marca DBD::Pg::st execute failed:ERROR: date/time field value out of range "16/06/2004" HINT: Perhaps you need a different 'datestyle' setting at line 30, que es donde le paso los parámetros a la rutina para que grabe los datos en una tabla de PostgreSQL ¿Me puedes apoyar?

Realicé otra prueba: cambié la definición del campo en PostgreSQL de fecha a character de 10 posiciones y funcionó correctamente, es decir, pasé datos de una hoja de Excel a una tabla de PostgreSQL. La pregunta es: ¿cómo escribo en una hoja de Excel?
Hector Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-04-15 14:49 @659

Re: Carga de información de Excel a base de datos

Notapor explorer » 2011-05-04 13:52 @619

Hector Gutierrez escribiste:Tengo una hoja de Excel .xls que tiene 5 columnas; la segunda es fecha con formato DD/MM/AAAA; al ejecutar el programa me marca DBD::Pg::st execute failed:ERROR: date/time field value out of range "16/06/2004" HINT: Perhaps you need a different 'datestyle' setting at line 30, que es donde le paso los parámetros a la rutina para que grabe los datos en una tabla de PostgreSQL ¿Me puedes apoyar?
Es muy posible que la fecha que estás leyendo desde la hoja Excel esté en formato dd/mm/aaaa, pero PostgreSQL quizás está esperando un formato anglosajón: mm/dd/aaaa.

Hector Gutierrez escribiste:Realicé otra prueba: cambié la definición del campo en PostgreSQL de fecha a character de 10 posiciones y funcionó correctamente, es decir, pasé datos de una hoja de Excel a una tabla de PostgreSQL. La pregunta es: ¿cómo escribo en una hoja de Excel?
Con Spreadsheet::WriteExcel.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Carga de información de Excel a base de datos

Notapor Hector Gutierrez » 2011-05-04 15:52 @702

Ya funcionó todo correctamente, la lectura y escritura de hojas de Excel, gracias.
Hector Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-04-15 14:49 @659

Re: Carga de información de Excel a base de datos

Notapor Txemaracas » 2011-05-18 07:04 @336

Hola, una pregunta: si en vez de usar PostgreSQL uso MySQL, ¿el código para conectarse a la base de datos y lo demás que escribió Hector Gutierrez en el primer post sería igual, lo único que cambiando el nombre de la base de datos? Me imagino que también debería bajarme algún modulo relacionado con MySQL, ¿no?
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron