#!/usr/bin/perl -w ######################################################################## # # Example of formatting using the Spreadsheet::WriteExcel module via # property hashes. # # Setting format properties via hashes of values is useful when you have # to deal with a large number of similar formats. Consider for example a # chess board pattern with black squares, white unformatted squares and # a border. # # This relatively simple example requires 14 separate Format # objects although there are only 5 different properties: black # background, top border, bottom border, left border and right border. # # Using property hashes it is possible to define these 5 sets of # properties and then add them together to create the 14 Format # configurations. # # reverse('©'), July 2001, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new("chess.xls"); my $worksheet = $workbook->add_worksheet(); # Some row and column formatting $worksheet->set_column('B:I', 10); for my $i (1..8) { $worksheet->set_row($i, 50); } # Define the property hashes # my %black = ( 'fg_color' => 'black', 'pattern' => 1, ); my %top = ( 'top' => 6 ); my %bottom = ( 'bottom' => 6 ); my %left = ( 'left' => 6 ); my %right = ( 'right' => 6 ); # Define the formats # my $format01 = $workbook->add_format(%top, %left ); my $format02 = $workbook->add_format(%top, %black ); my $format03 = $workbook->add_format(%top, ); my $format04 = $workbook->add_format(%top, %right, %black ); my $format05 = $workbook->add_format(%left ); my $format06 = $workbook->add_format(%black ); my $format07 = $workbook->add_format( ); my $format08 = $workbook->add_format(%right, %black ); my $format09 = $workbook->add_format(%right ); my $format10 = $workbook->add_format(%left, %black ); my $format11 = $workbook->add_format(%bottom, %left, %black ); my $format12 = $workbook->add_format(%bottom ); my $format13 = $workbook->add_format(%bottom, %black ); my $format14 = $workbook->add_format(%bottom, %right ); # Draw the pattern $worksheet->write('B2', '', $format01); $worksheet->write('C2', '', $format02); $worksheet->write('D2', '', $format03); $worksheet->write('E2', '', $format02); $worksheet->write('F2', '', $format03); $worksheet->write('G2', '', $format02); $worksheet->write('H2', '', $format03); $worksheet->write('I2', '', $format04); $worksheet->write('B3', '', $format10); $worksheet->write('C3', '', $format07); $worksheet->write('D3', '', $format06); $worksheet->write('E3', '', $format07); $worksheet->write('F3', '', $format06); $worksheet->write('G3', '', $format07); $worksheet->write('H3', '', $format06); $worksheet->write('I3', '', $format09); $worksheet->write('B4', '', $format05); $worksheet->write('C4', '', $format06); $worksheet->write('D4', '', $format07); $worksheet->write('E4', '', $format06); $worksheet->write('F4', '', $format07); $worksheet->write('G4', '', $format06); $worksheet->write('H4', '', $format07); $worksheet->write('I4', '', $format08); $worksheet->write('B5', '', $format10); $worksheet->write('C5', '', $format07); $worksheet->write('D5', '', $format06); $worksheet->write('E5', '', $format07); $worksheet->write('F5', '', $format06); $worksheet->write('G5', '', $format07); $worksheet->write('H5', '', $format06); $worksheet->write('I5', '', $format09); $worksheet->write('B6', '', $format05); $worksheet->write('C6', '', $format06); $worksheet->write('D6', '', $format07); $worksheet->write('E6', '', $format06); $worksheet->write('F6', '', $format07); $worksheet->write('G6', '', $format06); $worksheet->write('H6', '', $format07); $worksheet->write('I6', '', $format08); $worksheet->write('B7', '', $format10); $worksheet->write('C7', '', $format07); $worksheet->write('D7', '', $format06); $worksheet->write('E7', '', $format07); $worksheet->write('F7', '', $format06); $worksheet->write('G7', '', $format07); $worksheet->write('H7', '', $format06); $worksheet->write('I7', '', $format09); $worksheet->write('B8', '', $format05); $worksheet->write('C8', '', $format06); $worksheet->write('D8', '', $format07); $worksheet->write('E8', '', $format06); $worksheet->write('F8', '', $format07); $worksheet->write('G8', '', $format06); $worksheet->write('H8', '', $format07); $worksheet->write('I8', '', $format08); $worksheet->write('B9', '', $format11); $worksheet->write('C9', '', $format12); $worksheet->write('D9', '', $format13); $worksheet->write('E9', '', $format12); $worksheet->write('F9', '', $format13); $worksheet->write('G9', '', $format12); $worksheet->write('H9', '', $format13); $worksheet->write('I9', '', $format14);