in reply to Re^3: Spreadsheet::WriteExcel, numbers v strings?
in thread Spreadsheet::WriteExcel, numbers v strings?

I have a similar problem: if I do something like: $worksheet->write_string('A2', '0123'); I get the number in my Excel 2002 spreadsheet displayed as "0123" as desired - but with the annoying green triangle in Excel suggesting I have "Number displayed as string". Is there a way from the Perl WriteExcel side of making the green triangle disappear?
  • Comment on Re^4: Spreadsheet::WriteExcel, numbers v strings?

Replies are listed 'Best First'.
Re^5: Spreadsheet::WriteExcel, numbers v strings?
by jmcnamara (Monsignor) on Mar 28, 2008 at 18:54 UTC

    If you want to avoid the "Number stored as text" warnings in Excel then you will have to write the data as numbers and format it to have a padded leading zero. Item 3 of the example below demonstrates this.
    #!/usr/bin/perl -w use strict; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new('test.xls'); my $worksheet = $workbook->addworksheet(); # A padded number format my $format = $workbook->add_format(num_format => '0000'); # 1. Implicitly write a number, the leading zero is removed: 123 $worksheet->write('B2', '0123'); # 2. Write explicitly as a string: 0123 $worksheet->write_string('B3', '0123'); # 3. Write a zero padded number using a format: 0123 $worksheet->write('B4', '0123', $format); __END__

    --
    John.