I would like to export an HTML table
to a MS Excel document (and PDF ideally) as it is displayed on the HTML/CSS page. I read a lot of pages and topics about it (on stack mainly) but everyone seemed to be talking about exporting the table, and not formatting the final excel file.
I think it should work like this:
- click on export button: call to jQuery
- jQuery creates a pure HTML document from the HTML/CSS of the
table
- jQuery calls a PHP function/class (http://phpexcel.codeplex.com maybe) to generate the EXCEL file from the HTML code reformatted
- With the headers sent by PHP, the browser asks the user to save/open the excel generated file
Would this work? If so do you know any jQuery plugins and PHP classes/functions to do so? If not, what is your ideas about it?
EDIT: Thanks to Matt, I came to the idea of using an XLS file template, is it possible? It will avoid me all the formatting as it would be done in the template file. Is it possible?
Cheers,
Nicolas.
I finally choose to redo all the formatting with PHPexcel. The drawback is that if I change something in the HTML rendered I have to do the same in the PHPexcel helper I've created and vice versa.
Thank you for your suggestion everyone.
Nicolas.
It sounds like you want the PHP file to screen scrape the jQuery generated page? This is not impossible (you can do so with the cUrl functions, take a look at this article) however if you can obtain the table data in any other way, it would be preferable. How is the table data originated? Is the table being edited by the user? Unless the user is adding content/styles, you should be able to pull the data from another source, and it will be easier.
First you should know there are primarily two methods to generate an Excel file in PHP:
Option 1 offers no styles whatsoever, just data.
Option 2 can add styles (though it's terribly obfuscated due to Excel's cumbersome format). Additionally, you have no guarantee the styles will translate to other applications (OO.org, StarOffice, Lotus, WP Office, etc.) - the XML will not be rendered consistently and your document styles will likely be lost or degraded.
If you have to resort to screen scraping, getting the css styles is going to be the most difficult part. Take a look at some of the solutions offered in this article for some ideas on how to get started.
Good luck!
This might help with the actual Excel spreadsheet writing... http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8
I've used it before, but haven't added any additional formatting to it. I imagine it's possible, somehow...