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:
Using perl Syntax Highlighting
- # Antes del las subrutina:
- use Spreadsheet::WriteExcel;
- # [BLOQUE]
- my $workbook = Spreadsheet::WriteExcel->new('tabla.xls');
- my $worksheet = $workbook->add_worksheet();
- # [BLOQUE]
- # La invoco con la siguiente expresión dentro del bucle
- for(@tmp){
- # [BLOQUE]
- &ex_print($worksheet, @TM);
- # [BLOQUE]
- @TM =();
- }
- # La subrutina en si
- sub ex_print{
- my($worksheet,@lista)=@_;
- my $fila=0;
- my $col=0;
- for(@lista){
- $worksheet->write($fila, $col, $_);
- $fila++;
- }
- $col++;
- }
- __END__
Coloreado en 0.003 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