#!/usr/bin/perl -w ############################################################################## # # Demonstrates how to wrap data from one worksheet onto another. # # Excel has a row limit of 65536 rows. Sometimes the amount of row data to be # written to a file is greater than this limit. In this case it is a useful # technique to wrap the data from one worksheet onto the next so that we get # something like the following: # # Sheet1 Row 1 - 65536 # Sheet2 Row 65537 - 131072 # Sheet3 Row 131073 - ... # # In order to achieve this we use a single worksheet reference and # reinitialise it to point to a new worksheet when required. # # reverse('©'), May 2006, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new('row_wrap.xls'); my $worksheet = $workbook->add_worksheet(); # Worksheet formatting. $worksheet->set_column('A:A', 20); # For the sake of this example we will use a small row limit. In order to use # the entire row range set the $row_limit to 65536. my $row_limit = 10; my $row = 0; for my $count (1 .. 2 * $row_limit +10) { # When we hit the row limit we redirect the output # to a new worksheet and reset the row number. if ($row == $row_limit) { $worksheet = $workbook->add_worksheet(); $row = 0; # Repeat any worksheet formatting. $worksheet->set_column('A:A', 20); } $worksheet->write($row, 0, "This is row $count"); $row++; }