Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Tengo un problema, de perlero nuevo :(. No sé por qué me da error el módulo DateTime::Format::Excel al pasar la columna fecha leída desde el Excel, pero le entrego una fecha puesta, por ejemplo, a '25999' y me entrega bien la fecha. Es cuando le paso la variable desde la lectura con el Spreadsheet::Read.
Acá el ejemplo completo sobre Linux, le puede servir a cualquiera...
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- use strict;
- use Spreadsheet::Read;
- use DateTime::Format::Excel;
- my $home = "/home/elizalde/SRCVeI/";
- my $sector = '';
- my $columna = '';
- my $ref = ReadData("matrimonioTest.xls", cell => 0, atrr => 1);
- die "ERROR: xls no encontrado \n";
- #$columna = $ref->[1]{'A3'};
- $columna = $ref->[1]{cell}[1][3];
- print $columna. "\n";
- print $ref->[1]{label}. "\n";
- my %HOJAS = %{$ref->[0]->{sheet}};
- my $HOJA = $ref->[ $HOJAS{'Hoja1'} ]->{cell};
- open(TEST,"> mat");
- for (my $i = 1; $HOJA->[1]->[$i]; $i++) {
- my $rut_h = $HOJA->[6]->[$i];
- my $rut_m = $HOJA->[12]->[$i];
- my $femat = $HOJA->[5]->[$i]; # Acá saco la fecha
- my $num_h = length($rut_h);
- if( $num_h != 8) {
- my $number_h = 8 - $num_h;
- for (my $j = 0; $j < $number_h; $j++){
- $rut_h = 0 .$rut_h;
- }
- }
- my $num_m = length($rut_m);
- if( $num_m != 8){
- my $number_m = 8 - $num_m;
- for (my $j = 0; $j < $number_m; $j++){
- $rut_m = 0 .$rut_m;
- }
- }
- chomp($femat); # Acá le saco el salto de línea
- #print $femat; # al hacer este print me imprime las fechas todas juntas, por lo que no tiene salto de línea
- $femat = DateTime::Format::Excel->parse_datetime($femat); # aquí da el error
- print $rut_h." ".$rut_m." ".$femat."\n";
- #print TEST $rut_h." ".$rut_m." ".$femat."\n";
- }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
y el error
Using text Syntax Highlighting
Invalid number of days at test-xls.pl line 41
Ahora, si cambio el chomp() donde saco la fecha
Using perl Syntax Highlighting
- my $femat = chomp($HOJA->[5]->[$i]); # Acá saco la fecha
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
me repite un fecha que nada que ver más encima
Using text Syntax Highlighting
02278116 04717375 1899-12-30
03677085 04697870 1899-12-30
02317964 03876039 1899-12-30
02257829 05661316 1899-12-30
03114734 03031063 1899-12-30
02548299 06774063 1899-12-30
04377600 05258807 1899-12-30
02055320 02985158 1899-12-30
02724505 03827374 1899-12-30
03696535 03349395 1899-12-30
03679705 04078452 1899-12-30
02430607 04733001 1899-12-30
03374584 04029602 1899-12-30
02320512 03368484 1899-12-30
03947712 04561318 1899-12-30
02820813 04769460 1899-12-30
03047918 04243931 1899-12-30
04341582 05671534 1899-12-30
03561156 03734840 1899-12-30
03904098 05460381 1899-12-30
03218835 06508284 1899-12-30
03677085 04697870 1899-12-30
02317964 03876039 1899-12-30
02257829 05661316 1899-12-30
03114734 03031063 1899-12-30
02548299 06774063 1899-12-30
04377600 05258807 1899-12-30
02055320 02985158 1899-12-30
02724505 03827374 1899-12-30
03696535 03349395 1899-12-30
03679705 04078452 1899-12-30
02430607 04733001 1899-12-30
03374584 04029602 1899-12-30
02320512 03368484 1899-12-30
03947712 04561318 1899-12-30
02820813 04769460 1899-12-30
03047918 04243931 1899-12-30
04341582 05671534 1899-12-30
03561156 03734840 1899-12-30
03904098 05460381 1899-12-30
03218835 06508284 1899-12-30
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
A ver si alguien me dice dónde está mi error :roll: que no logro ver o si a lo mejor hay otra opción.
Saludos.