• Publicidad

Spreadsheet::WriteExcel para escribir múltiples columnas

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Spreadsheet::WriteExcel para escribir múltiples columnas

Notapor Alfumao » 2011-02-02 12:52 @578

Buenas tardes,

Hice una subrutina para que me fuera escribiendo los datos de un array como una columna en una hoja Excel. Yo necesito que cada array que se pase a la subrutina de forma consecutiva, se pueda escribir como una columna nueva de la misma hoja Excel.

Usando el módulo Spreadsheet::WriteExcel solo me escribe una columna y después se para la ejecución del programa, al no dejarme escribir nada más en la misma hoja del archivo Excel.

Os pongo el código a ver si me podéis decir algo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # Antes del las subrutina:
  2.  
  3. use Spreadsheet::WriteExcel;
  4.  
  5. # [BLOQUE]
  6.  
  7. my $workbook  = Spreadsheet::WriteExcel->new('tabla.xls');
  8. my $worksheet = $workbook->add_worksheet();
  9.  
  10. # [BLOQUE]
  11.  
  12. # La invoco con la siguiente expresión dentro del bucle
  13.  
  14. for(@tmp){
  15.  
  16. # [BLOQUE]
  17.  
  18. &ex_print($worksheet, @TM);
  19.  
  20. # [BLOQUE]
  21.  
  22. @TM =();
  23. }
  24.  
  25. # La subrutina en si
  26.  
  27. sub ex_print{
  28.  
  29. my($worksheet,@lista)=@_;
  30. my $fila=0;
  31. my $col=0;
  32.  
  33. for(@lista){
  34. $worksheet->write($fila, $col, $_);
  35. $fila++;
  36. }
  37. $col++;
  38. }
  39.  
  40. __END__
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4


¿Alguien me puede explicar por qué no me deja escribir más de una columna o cómo abrir el Excel para poder agregarle columnas nuevas? (ya que [">>tabla.xls"] parece no valer aquí)

Un saludo
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Spreadsheet::WriteExcel para escribir múltiples columnas

Notapor explorer » 2011-02-02 13:09 @589

El paso de un array a una columna lo hace, en un solo paso, el método write_col() de ese mismo módulo. ¿Lo has probado?
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: Spreadsheet::WriteExcel para escribir múltiples columnas

Notapor Alfumao » 2011-02-02 13:22 @599

Aparentemente con esta llamada, la subrutina me funciona y se escribe un array por fila

# Antes del las subrutina:

use Spreadsheet::WriteExcel;

[BLOQUE]

my $workbook = Spreadsheet::WriteExcel->new('tabla.xls');

my $worksheet = $workbook->add_worksheet();

my fila=1;

[BLOQUE]

# La invoco con la siguiente expresión dentro del bucle

for(@tmp){

[BLOQUE]

&ex_print($worksheet, @TM);

[BLOQUE]

@TM =();

}

# La subrutina en si misma:

sub ex_print{

my($worksheet,$TM)=@_;

$worksheet->write_row("A"."$fila", \@TM);
$fila++;
}


Se podrían imprimir los arrays en columnas usando:

$worksheet->write_col("A"."$col", \@TM);

Muchas gracias como siempre, explorer.

;)
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514


Volver a Módulos

¿Quién está conectado?

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