Tengo un archivo xlsx el cual lo quiero pasar a txt. Cuando leo el archivo xlsx obtengo el valor de las celdas que me interesan. El problema surge al leer celdas que contienen fórmulas o cantidades fijas. Obtengo un cero y lo que me interesa es extraer el valor de esa celda.
¿Cómo puedo hacer, para que en lugar de 0, me mande realmente el valor que contiene la fórmula?
Pongo el código donde obtengo el valor de las celdas:
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- BEGIN {
- # Declaramos la ruta de ubicacion del modulo 'comun'.
- @INC = ( @INC, "/var/www/cgi-bin/comun" );
- }
- use reportes;
- use Spreadsheet::Read;
- use strict;
- my %lab_importes;
- my @claves;
- my @abecedario = ( "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "R" )
- ; #estas son las columnas que contienen valores
- my $r = 8; #el archivo de excel siempre lo voy a leer a partir de la fila 8
- my $renglon = 50; #es el numero maximo de renglones que voy a leer
- my $ref = ReadData("extrae_datos.xlsx"); # Leer fichero Excel
- die "ERROR: El archivo de excel no fue encontrado" if not $ref;
- for ( my $y = 1; $y <= $renglon; $y++ ) {
- my $col = 3;
- my $n1 = $ref->[1]{cell}[$col][$r];
- $col++; # empiezo leyendo la c8
- my $n2 = $ref->[1]{cell}[$col][$r];
- $col++;
- my $n3 = $ref->[1]{cell}[$col][$r];
- $col++;
- my $n4 = $ref->[1]{cell}[$col][$r];
- $col++;
- my $n5 = $ref->[1]{cell}[$col][$r];
- $col++;
- my $n6 = $ref->[1]{cell}[$col][$r];
- $col++;
- my $n7 = $ref->[1]{cell}[$col][$r];
- my $clave = $n1 . '|' . $n2 . '|' . $n3 . '|' . $n4 . '|' . $n5 . '|' . $n6 . '|' . $n7; #formo la clave del renglon
- for ( my $mes = 1; $mes <= 13; $mes++ ) {
- foreach my $columna (@abecedario) {
- $lab_importes{ $mes . $y }
- = $ref->[1]{ $columna
- . $r
- }; #es en esta parte donde leo las celdas que contienen formulas
- #y en vez de darme el valor de la celda, siempre me da un 0
- }
- }
- push( @claves, "$clave" );
- $r++;
- }
- unshift @claves, 0;
- #genero el documento plano
- my $archivo = "PLANO_PLANTILLA_111.txt";
- open( ARCHIVO, "> $archivo" ) || die "lo siento, no puedo crear $archivo.txt\n";
- for ( my $mes = 1; $mes <= 13; $mes++ ) {
- for ( my $y = 1; $y <= $renglon; $y++ ) {
- my $linea
- = $claves[$y] . '|' . 'M' . '|'
- . $mes . '|'
- . $lab_importes{ $mes
- . $y
- }; #cuando imprimo los valores de $lab_importes{$mes.$y}
- #siempre me arroja 0 y no el valor que contiene la celda.
- print ARCHIVO "$linea \n";
- }
- }
- close(ARCHIVO);
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
¿Qué me hace falta para que pueda imprimir los valores correctos?