Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to format cels with as a foreign currency. Two examples are the Sterling Pound and Taiwanese dollar. It is easy enough to format cells as USD set_num_format('$0.00'); Can someone help me use foreign currencies for this?

Replies are listed 'Best First'.
Re: Spreadsheet::WriteExcel foreign currency
by jmcnamara (Monsignor) on Jun 19, 2007 at 09:45 UTC

    In Excel, format the currency as required with the Format->Cell->Number->Currency dialog. Then, in the same dialog, scroll to the end of the Custom Number formats and you should see the number format that you just used. Copy and paste this format into your Spreadsheet::WriteExcel program.

    Here is a simple example for Sterling and the Hong Kong dollar (I didn't have Taiwanese dollar in my version of Excel):

    #!/usr/bin/perl -w use strict; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new('currency.xls'); my $worksheet = $workbook->add_worksheet(); my $pound_sterling = $workbook->add_format(num_format => '£#,##0 +.00'); my $hong_kong_dollar = $workbook->add_format(num_format => '[$HKD] + #,##0.00'); # You can also use this slightly more explicit format for Sterling +: # [$£-809]#,##0.00 $worksheet->write('A1', 1.23, $pound_sterling); $worksheet->write('A2', 1.23, $hong_kong_dollar);

    --
    John.

Re: Spreadsheet::WriteExcel foreign currency
by regexes (Hermit) on Jun 19, 2007 at 06:42 UTC
    Hello, I haven't had to use a foreign currency yet, however, I'll give it a try.

    Within the Spreadsheet-WriteExcel-2.17/examples directory of the module, there is an example program --> formats.pl

    It'll show you Excel's built-in formats. Opening the excel file generated from formats.pl shows the Euro symbol for me.

    From the generated table..
    Index Index Unformatted Formatted Negative Format
    5 0x05 1234,567 1.235 € -1.235 € ($#,##0_);($#,##0)


    This leads me to believe that the currency symbol is simply set by the locale settings of the Excel program being used to open the file.

    Hope it helps...

    regexes


    -------------------------
    Nothing in the world can take the place of persistence. Talent will not; nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education will not; the world is full of educated derelicts. Persistence and determination are omnipotent. The slogan "press on" has solved and always will solve the problems of the human race.
    -- Calvin Coolidge, 30th President of the USA.
      Thanks jmcnamara, I overlooked it in the documentation.
      In Spreadsheet::WriteExcel, search for the set_num_format under the CELL FORMATTING section. You find this...
      $format04->set_num_format('$0.00'); $worksheet->write(3, 0, 49.99, $format04); # $49.99 $format05->set_num_format('£0.00'); $worksheet->write(4, 0, 49.99, $format05); # £49.99 $format06->set_num_format('¥0.00'); $worksheet->write(5, 0, 49.99, $format06); # ¥49.99

      regexes