Skip to content

Creating excel files through PHP

No need to use complicated or extensive libraries (such as PEAR) to create Excel pages. Just take advantage of the "smart" part of Excel; its ability to parse an HTML table to a nice Excel page.

Just create a regular .PHP file, where you output your data in a nice little html-table. Then place the following snippet in the top of that file (no output can happen before these lines, as they change your headers -- so place these all the way at the top):

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=excel.xls");

And it's just that easy. If you open the page, you'll see a download-window asking you where to place the file. The headers will tell your computer that it's an Excel-file, which will parse your html-table (assuming you've written it without errors) and display it nicely.

If that's not enough, you can look at more extensive libraries such as PHPExcel. As their examples show, it offers more advanced features.

Comment Feed

65 Responses

  1. Hi,
    great!
    But i have a Problem with UTF8 cyrillic :(
    just strange Signs :(

    added
    header(“Content-Type: text/html; charset=utf-8″);
    header(“Content-type: application/vnd.ms-excel”);
    header(“Content-Disposition: attachment; filename=excel.xls”);

    excel.php is saved as UTF8

    still not working :(

    any solutions??

    THX

  2. Using this or other code like it I can make the file pop up on the browser to open or save. But how can I attach the file to an email and send it instead of opening it or saving it?

  3. Thank you . I left hope before coming to your site. Gave a last try and it worked thanks a lot

  4. You’ll need some way to communicate to your downloader that he/she should expect to see a warning when Excel (2010) detects it has to do a conversion.

    But, it works Just Fine(tm) otherwise. Thank you!

  5. If I style my html table will the colors and stuff go along with it?

« Older Comments



Some HTML is OK

*

or, reply to this post via trackback.