http://www.perlmonks.org?node_id=582840


in reply to Create a excel sheet with formula ???


I think that there are 2 things that might help you here. The first is the write_col() worksheet method which will write a column or an array of data in one go.

The second is that since a formula is initially only a string you can generate it programmatically based on the number of cells that you have. Both of these points are shown in this short example:

#/usr/bin/perl -wl use strict; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new("z.xls"); my $worksheet = $workbook->add_worksheet(); my @column = ( 'pass', 'fail', 'pass', 'pass', ); my @array = ( [ '1', '00A', 'pass' ], [ '2', '01A', 'fail' ], [ '3', '01B', 'fail' ], [ '4', '02A', 'pass' ], ); $worksheet->write_col('B2', \@column); $worksheet->write_col('D2', \@array); # Generate the formula. my $first_row = 2; # B2 in this example my $last_row = $first_row + @array -1; $worksheet->write('H2', '=COUNTIF(F2:F' . $last_row . ', "FAIL")' +); __END__

--
John.