http://www.perlmonks.org?node_id=993950


in reply to Re: Not sure why perl-generated spreadsheet has formatting issues
in thread Not sure why perl-generated spreadsheet has formatting issues

Hi Athanasius, I've tried the code but the output is still the same. Is it possible for me to send you the output file I was able to generate?

If I highlight the cell, it shows the formatting I want. But if I generate a pivot table from that, it will still cause me problems when I try to group the information.

The only solution for me at this time is to double-click each cell, then press "Enter" in order for the data to be displayed and treated correctly :(

  • Comment on Re^2: Not sure why perl-generated spreadsheet has formatting issues

Replies are listed 'Best First'.
Re^3: Not sure why perl-generated spreadsheet has formatting issues
by Athanasius (Archbishop) on Sep 18, 2012 at 09:06 UTC

    Hello poopay,

    I can think of only two ways to write formatted dates into an Excel spreadsheet using Excel::Writer::XLSX:

    1. 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?

    2. 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