use Spreadsheet::WriteExcel::Big;

sub writeSpreadsheet {
  my $params = shift;
  my $processed = 0;

  print STDERR "Creating excel file $params->{file}...\n";
  my $workbook = Spreadsheet::WriteExcel::Big->new( $params->{file} );

  while ($processed < scalar(@{$params->{rows}})) {
    my $worksheet = $workbook->add_worksheet;

    ### Print out the header row if there is a header
    if (defined $params->{columns}) {
      for (my $col = 0; $col < scalar(@{$params->{columns}}); $col++) {
	$worksheet->write(0, $col, $params->{columns}->[$col]);
      }
    }

    my $foo = scalar(@{$params->{rows}}) - $processed + 1;

    for (my $row = 1; (($row < $foo) && ($row < 65535)); $row++) {
      my $col = 0;

      for (@{$params->{rows}->[$processed]}) {
	if (($_ =~ /^\d+$/) || ($_ =~ /^(\d|\.)+$/)) {
	  $worksheet->write_number($row, $col++, $_);
	} else {
	  $worksheet->write_string($row, $col++, $_ || '')
	}
      }
      $processed++;
    }
  }

  $workbook->close();
  print STDERR "Done.\n";
}

1;

