http://qs321.pair.com?node_id=1212436


in reply to Setting format in Excel using perl

my $wbk = Spreadsheet::WriteExcel->new ($xls); my $wks = $wbk->add_worksheet (); my $fmt = $wbk->add_format (align => "center", num_format => "dd-mm-yy +yy"); $wks->write ($row, $col, $date, $fmt);

update: After a question in a /msg, I checked what the value of $date must be:

use Spreadsheet::WriteExcel; use Date::Calc qw( Delta_Days ); my $wbk = Spreadsheet::WriteExcel->new ("test.xls"); my $wks = $wbk->add_worksheet (); my $dtf = $wbk->add_format (align => "center", num_format => "yyyy-mm- +dd"); my $dt = 20180406; # Dates need a special treat ... my ($y, $m, $d) = unpack "A4A2A2" => $dt; $dt = 2 + Delta_Days (1900, 1, 1, $y, $m, $d); $wks->write (2, 1, $dt); $wks->write (2, 3, $dt, $dtf); # THIS WORKS for the formatted value # Alternatively use $wks->write_date_time ("D2", "2018-04-06T16:17", $dtf); $wbk->close;

And IMHO M/D/YY should hardcoded be forbidden in all cases. Use ISO!


Enjoy, Have FUN! H.Merijn