Dave Cross: Still Munging Data With Perl: Online event - Mar 17 Learn more

#!/usr/bin/perl
#######################################################################
#
# A simple example of how to use the Excel::Writer::XLSX module to
# demonstrate stenciling in an Excel xlsx file.
#
# reverse ('(c)'), May 2012, John McNamara, jmcnamara@cpan.org
#
use strict;
my $workbook = Excel::Writer::XLSX->new( 'shape4.xlsx' );
my $worksheet = $workbook->add_worksheet();
$worksheet->hide_gridlines( 2 );
my $type = 'rect';
my $shape = $workbook->add_shape(
type => $type,
width => 90,
height => 90,
);
for my $n ( 1 .. 10 ) {
# Change the last 5 rectangles to stars. Previously inserted shapes stay
# as rectangles.
$type = 'star5' if $n == 6;
$shape->set_type( $type );
$shape->set_text( "$type $n" );
$worksheet->insert_shape( 'A1', $shape, $n * 100, 50 );
}
my $stencil = $workbook->add_shape(
stencil => 1, # The default.
width => 90,
height => 90,
text => 'started as a box',
);
$worksheet->insert_shape( 'A1', $stencil, 100, 150 );
$stencil->set_stencil( 0 );
$worksheet->insert_shape( 'A1', $stencil, 200, 150 );
$worksheet->insert_shape( 'A1', $stencil, 300, 150 );
# Ooops! Changed my mind. Change the rectangle to an ellipse (circle),
# for the last two shapes.
$stencil->set_type( 'ellipse' );
$stencil->set_text( 'Now its a circle' );
__END__