• Publicidad

Dar formato con Spreadsheet::WriteExcel

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Dar formato con Spreadsheet::WriteExcel

Notapor scout » 2009-11-21 19:08 @839

Gente: estoy intentando dar formato a un archivo Excel creado por el Perl con ayuda del modulo Spreadsheet::WriteExcel.

En la información que aparece en CPAN figura lo que pongo debajo; por ejemplo, para ponerle bordes... pero me interesa saber si alguno le pasó esto de querer dar formato... o tiene algún ejemplo... ya que la idea es recuadrar ciertas variable que van entrando en Excel...

Acá va el famoso ejemplo del cual estoy partiendo y no sé dónde ponerle el set border.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# EXCEL spreadsheet

use Spreadsheet::Write;
use Spreadsheet::WriteExcel;

my $sp=Spreadsheet::Write->new(
        file        => 'c:\perl\employees.xls',
        styles      => {
        header => { font_weight => 'bold' },
       
        },
    );
    $sp->addrow(
        { content => 'IDInstalacion', font_weight => 'bold' },
        { content => 'Last Name', font_weight => 'bold' },
        { content => 'Age', style => 'header' },  
     

    );
    $sp->addrow("John","Doe",34);
    $sp->addrow("Susan","Smith",28);

 
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
set_border()
    Also applies to:    set_bottom()
                        set_top()
                        set_left()
                        set_right()

    Default state:      Border is off
    Default action:     Set border type 1
    Valid args:         0-13, See below.

A cell border is comprised of a border on the bottom, top, left and right. These can be set to the same value using set_border() or individually using the relevant method calls shown above.

The following shows the border styles sorted by Spreadsheet::WriteExcel index number:

    Index   Name            Weight   Style
    =====   =============   ======   ===========
    0       None            0
    1       Continuous      1        -----------
    2       Continuous      2        -----------
    3       Dash            1        - - - - - -
    4       Dot             1        . . . . . .
    5       Continuous      3        -----------
    6       Double          3        ===========
    7       Continuous      0        -----------
    8       Dash            2        - - - - - -
    9       Dash Dot        1        - . - . - .
    10      Dash Dot        2        - . - . - .
    11      Dash Dot Dot    1        - . . - . .
    12      Dash Dot Dot    2        - . . - . .
    13      SlantDash Dot   2        / - . / - .
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: Dar formato a Excel con Spreadsheet::WriteExcel

Notapor explorer » 2009-11-21 19:37 @859

En la documentación, justo después de todo eso, dice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Examples of the available border styles are shown in the 'Borders' worksheet created by formats.pl.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Así que vamos a la carpeta de ejemplos y buscamos el formats.pl, del que vemos este extracto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    for my $i (0..13){
        my $format = $workbook->add_format();
        $format->set_border($i);
        $format->set_border_color('red');
        $format->set_align('center');

        $worksheet->write((2*($i+1)), 0, $i,                    $center);
        $worksheet->write((2*($i+1)), 1, sprintf("0x%02X", $i), $center);

        $worksheet->write((2*($i+1)), 3, "Border", $format);
    }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Es decir:
  • Hacemos un bucle de 0 a 13, en que...
  • creamos un formato o, mejor dicho, un estilo, con la ayuda de add_format(), aplicado al libro Excel que hemos abierto
  • en ese formato, decimos que los bordes serán $i (es decir, que vamos a recorrer los 14 tipos distintos de bordes)
  • color de ese borde...
  • y el contenido de la celda, centrado
  • En la hoja en donde estamos trabajando, en la posición 2*($i+1), ponemos $i, centrado ($center es un estilo definido antes)
  • De la misma manera, en la siguiente columna ponemos el valor hexadecimal de $i
  • Y, finalmente, en la tercera columna, la palabra "Border", en una celda en la que además le ponemos el estilo definido antes en $format.

Así que en eso consiste el trabajo: crear formatos, aplicarles estilos, y aplicar esos formatos a las celdas o rangos de celdas en los que trabajamos.
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: Dar formato con Spreadsheet::WriteExcel

Notapor scout » 2009-11-21 19:55 @872

ok, lo pruebo.
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618


Volver a Intermedio

¿Quién está conectado?

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