Hola a todos,
Tengo un problema con Excel y las fechas. Tengo un xls de la forma:
Using text Syntax Highlighting
PRODUCTO COMERCIAL TARIFA FECHA CLIENTE UDS_VENTA
th5589 EMV34 F2 27/12/2011 0:00 11222 1
tj7753 EMV34 F2 29/12/2011 0:00 9845 1
h65ed EMV02 G5 02/01/2012 0:00 66038 1
th5589 EMV56 F1 10/01/2012 0:00 11462 2
tj7753 EMV34 G2 12/01/2012 0:00 40035 1
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
El tema es que quiero sacar las unidades vendidas en un determinado mes.
Using perl Syntax Highlighting
#!/usr/bin/perl
use Excel::Writer::XLSX;
use Spreadsheet::XLSX;
use Spreadsheet::ParseExcel;
use Spreadsheet::Read;
use strict;
use diagnostics;
use autodie;
use DateTime::Format::Excel;
# Creamos un nuevo libro y abrimos el actual para lectura
my $workbook2 = Excel::Writer::XLSX->new( "Salida.xlsx" );
my $worksheet2 = $workbook2->add_worksheet();
# Leemos el fichero y lo metemos en $puertos
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('ventas.xls');
if ( !defined $workbook ) {
die $parser->error(), ".\n";
}
my $venta_tot = 0;
for my $worksheet ( $workbook->worksheets() ) {
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
for my $row ( 1 .. $row_max ) {
my $fecha = $worksheet->get_cell( $row, 3);
print $fecha->value()."\n";
my $producto = $worksheet->get_cell( $row, 0);
my $venta = $worksheet->get_cell( $row, 6);
next unless $fecha;
if ($fecha->value() =~ /01\/12/) {
$venta_tot = $venta_tot + ($venta->value());
$worksheet2->write( $row, 0, $fecha->value() );
$worksheet2->write( $row, 1, $venta->value() );
$worksheet2->write( $row, 2, $producto->value() );
}
}
}
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
y guardarlo en el fichero
salida.xls. Al ejecutarlo, el fichero queda en blanco, y he visto que el print de la linea 27 que he puesto para ver la salida queda así:
Using text Syntax Highlighting
12-27-11 0:00
12-29-11 0:00
1-2-12 0:00
1-10-12 0:00
1-12-12 0:00
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
y por eso creo que no entra en el if de la línea 31. He estado consultando algún hilo anterior pero no encuentro la solución para que respete el formato de fecha tal como aparece en la Excel. ¿Alguna sugerencia?
Gracias de antemano.