Hello poopay,
I can think of only two ways to write formatted dates into an Excel spreadsheet using Excel::Writer::XLSX:
-
The ‘correct’ way is to convert the date string into Excel’s internal date format, namely a floating-point number. For example:
use Excel::Writer::XLSX::Utility;
...
my $ndate = xl_parse_date($date);
$worksheet->write_date_time($row, $col, $ndate, $format);
(Note that Excel::Writer::XLSX::Utility is installed along with Excel::Writer::XLSX, but its use may require the further installation of Date::Manip.)
Unfortunately, application of the appropriate $format here leads to the problem you describe: the formatting is present, but is not applied to the date until the user double-clicks the cell and presses Enter. I don’t know why this is, and I haven’t found any way to make the formatting appear directly. Possibly a bug in Excel::Writer::XLSX?
-
Bypass Excel’s formatting by entering the date as a string. This is the method I suggested in my previous post. You say, “I’ve tried the code but the output is still the same.” Well, I don’t see how that’s possible, since a date written as a string is just a string, as far as Excel is concerned. The code I gave is a kludge, but it works correctly for me, as I showed.
Is it possible for me to send you the output file I was able to generate?
No, but I don’t see how that would help anyway. It would be much more useful for you to show the code you used, and just describe the resulting output.
...if I generate a pivot table...
According to the documentation, Excel::Writer::XLSX does not (yet) support the generation of pivot tables — this is mentioned in the TO DO section. So, how are you generating pivot tables?
Perhaps the best advice I can give is that you investigate alternative modules for writing Excel. :-(
Athanasius <°(((>< contra mundum
| [reply] [d/l] |