Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^2: Excel-Writer-XLSX : Excel file with warning messages

by swl (Parson)
on Oct 08, 2019 at 06:23 UTC ( [id://11107190]=note: print w/replies, xml ) Need Help??


in reply to Re: Excel-Writer-XLSX : Excel file with warning messages
in thread Excel-Writer-XLSX : Excel file with warning messages

Here is some code to get to the same error message.

Run the code to the point it pauses, then try to open the perl.xlsx file using Excel.

It uses an undocumented internal method, so hopefully is not what is actually being done. I tried a few variants of deferred close etc. but without success as all files were zero sized until the close method is called (or objects destroyed). Perhaps there is a point where Excel::Writer::XLSX reaches a memory or size threshold and writes the data to file, and this is being hit by the OP.

# adapted from the Excel::Writer::XLSX synopsis use 5.010; use warnings; use Excel::Writer::XLSX; my $workbook = Excel::Writer::XLSX->new( 'perl.xlsx' ); # Add a worksheet $worksheet = $workbook->add_worksheet(); # some data for my $row (0..5) { for my $col (0..2) { $worksheet->write( $row, $col, $row ); } } # internal method used in ->close() $workbook->_store_workbook(); $workbook->close(); { # defer garbage collection to test file local $| = 1; say 'Pausing, press any key to continue'; my $pause = <>; }

Replies are listed 'Best First'.
Re^3: Excel-Writer-XLSX : Excel file with warning messages
by rajan (Acolyte) on Oct 10, 2019 at 06:26 UTC

    Dear Friends: Thanks for taking patience in answering the question. I have the issue resolved like this but I am not sure how it works. Here is the code

    my $subject="Monthly Report"; my $file_link="\n Dear Customer: Please click on the link below to dow +nload the Monthly Report for the month of 2019-05. <br><br> <a href=\ +"https://$hostname/ui_report/download_report?file=$fileloc\">Download + Report</a></center> \n\n"; # $fileloc contains the path of the store +d file in our server. &SendEmail($from,$toAddress,$cc,$bcc,$subject,'text/html',$file_link,$ +from); # This module sends an email with link - by clicking will down +load the excel report. In the "download_report" script: if ($file =~ /\.xlsx$/) { print "Content-type: application/vnd.openxmlformats-officedocument.spr +eadsheetml.sheet\n"; # The Content-Disposition will generate a prompt to save the file. print "Content-Disposition: attachment; filename=$file\n"; print "\n"; &download ($fileloc); exit 0; # NEWLY ADDED DUE TO ISSUE IN EXCEL REPORT OPENING } print "Content-Type: text/html\r\n\r\n"; my $cgi = new CGI; print $cgi->redirect("tent"); print "The redirect seems to have failed."; die;

    By simply adding "exit 0; " statement I am able to download and view the report without any warnings. I believe previously after the execution of if block, it continued the execution and it might have created the problem. Please let me know if my explanation is not sufficient.

    Above
      it continued the execution and it might have created the problem

      Yes, adding Content-Type: text/html to the end of the downloaded file.

      poj

      I can only speculate that your email script is sending the link before the file is completely written, but the fact that it has all the content makes me think that is unlikely. Maybe you are using an older version of Excel::Writer::XLSX and it has been since fixed? (The change log does not indicate anything, though, and the git log has the most recent changes to the close() method at eight years ago).

      You also say you use scripts, which suggests you are calling them using system, exec or similar instead of loading code from .pm files. Maybe there is something in that.

      It is easier to diagnose issues if you provide a short, self contained, correct example.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11107190]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2024-04-23 22:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found