How to create Microsoft Office Documents with PHP
By Justin Silverton
There are two main ways to build Excel, Word, and PowerPoint documents using PHP. The first is by using the COM library (only if you are using a Windows server) and the other is by using a more standardized approach such as HTML or CSV.
Dynamically creating a word document:
<?php
$word = new COM("word.application");
$word->Visible = 0;
$word->Documents->Add();
$word->Selection->PageSetup->LeftMargin = '2"';
$word->Selection->PageSetup->RightMargin = '2"';
//Setup the font
$word->Selection->Font->Name = 'Verdana';
$word->Selection->Font->Size = 8;
//Write some text
$word->Selection->TypeText("This is a test document");
//Save the document as DOC file
$word->Documents[1]->SaveAs("c:\\docs\\test1.doc");
//quit and release COM resources
$word->quit();
$word->Release();
$word = null;
?>
Dynamically creating an excel document
<?php
$excel = new COM("excel.application");
$excel->Visible = 0;
//Create a new workbook
$wkb = $excel->Workbooks->Add();
$sheet = $wkb->Worksheets(1);
//This code adds the text 'myvalue' on row 2, column 4
$sheet->activate;
$cell = $sheet->Cells(2,4);
$cell->Activate;
$cell->value = 'myvalue';
$wkb->SaveAs("C:\docs\test.xls");
//close and free resources
$wkb->Close(false);
$excel->Workbooks->Close();
$excel->Quit();
?>
Dynamically creating a powerpoint presentation
<?php
$powerpnt = new COM("powerpoint.application");
//Creating a new presentation
$pres=$powerpnt->Presentations->Add();
//Adds the first slide. "12" means blank slide
$pres->Slides->Add(1,12);
//Adds another slide. "10" means a slide with a clipart and text
$pres->Slides->Add(2,10);
//Adds a textbox
$pres->Slides[1]->Shapes->AddTextbox(1,20,50,300,40);
//Save the document as PPT file
$powerpnt->Presentations[1]->SaveAs("C:\Docs\test1.ppt");
//free resources and quit powerpoint
$powerpnt->quit();
?>
How to find Word, Excel, and Powerpoint functions
The following will show you all of the functions that are possible when accessing Microsoft Office components through php:

- Open Microsoft Word, Excel, or Powerpoint
- Press Alt+F11 to start the Visual Basic Editor
- Press F2
- Find “ThisDocument” on the left. In the right frame you’ll see the available variables and functions that can be used with the COM object.
23 Comments so far
Leave a reply






[…] From the JSLabs blog today, there’s a quick illustration of how to dynamically create three different types of Microsoft Office files - a Word document, Powerpoint and an Excel file. There are two main ways to build Excel, Word, and PowerPoint documents using PHP. The first is by using the COM library (only if you are using a Windows server) and the other is by using a more standardized approach such as HTML or CSV. […]
And what about is I am using Linux?
Use PEAR…
For example, Excel: http://pear.php.net/package/Spreadsheet_Excel_Writer
[…] Всю статью можно читать на сайте автора. […]
There is some bug in a code that presented above. After creating an COM object and saving some word document as file c:\\docs\\test1.doc, COM object not released from the memory. Not clear how to correct this bug ?
For creating Word documents, you can also use rtf format. There is free library for creating rtf with php- http://www.phprtf.com.
There is some bug in a code that presented above. After creating an COM object and saving some word document as file c:\\docs\\test1.doc, COM object not released from the memory. Not clear how to correct this bug ?
HOW ?????????
What version of PHP are you using?
[…] Justin Silverton describe dos formas principales de construir un documento de Excel, Word y PowerPoint usando PHP. La primera es usar la librería COM (sólo es válido si estas usando un servidor Windows), la segunda forma es utilizar una solución más estándar basada en HTML o CSV. […]
How can i open an existing excel file?
somehow find a lsit of all methods of the class?
You can also use XML formats for MS Office documents
I tried to create a ppt on the fly; copied and pasted but got an error:
Fatal error: Uncaught exception ‘com_exception’ with message ‘Failed to create COM object `powerpoint.application’:Access is denied. ‘
Figured it was an IE security issue; tweaked all applicable security settings to no avail. Any idea how to solve?
Billy,
your web server may not have the proper permissions to create the new document through COM. You might want to try checking the directory permissons (through the security tab of the properties).
I tried to create a word document and got the following error.
Fatal error: Uncaught exception ‘com_exception’ with message ‘Source: Microsoft Word
Description: Could not open macro storage.’
The error seems to be generating because the IUSR_MACHINENAME has no privileges to automate MS-Word. I have been looking around a lot to overcome this. But no success so far.
Please Help!
Hey Dmitry,
How we can we use XML to create doc ? Please provide some referance if you have.
Cesar D. Rodas asked “And what about is I am using Linux?” The answer was “Use PEAR… For example, Excel: http://pear.php.net/package/Spreadsheet_Excel_Writer”
Could you please give an example for Word?
And I’d like to second the request:
How we can we use XML to create doc? Please provide some references if you have any. - Thanks.
My web host does not seem to support the “COM” class; I just get “Fatal error: Class ‘COM’ not found”.
Grugs,
I did some research and found some Office/XML examples for you (and anyone else that is interested):
office 2007 spreadsheetXML classes:
http://blogs.balliauw.be/blogs/maarten/archive/2006/12/14/office-2007-spreadsheetml-classes-in-php.aspx
Could you give me some examples of PHP script about using TabStob class for Ms.Word? Thank you for your help.
in iis for windows put windows authenticated user on.
Hi,
I am using PHP5.0 with IIS and tried to run an example program you provided above but nothing happen. ( even error message does not appear on the browser(IE 6.0).
The setting of php.ini is almost as original copied from php.ini-recommended, So do I need to change some?
Thank you for your supports,
Hi,
I have this error while attempting to save word document: Fatal error: Call to undefined method variant::SaveAs()
Can you help me?
Thanks in advance!
How can you open an existing PPT file and delete a slide and then save the modified PPT file as a new presentation?
i have bugs in creating doc using php after running the program there must be a fatal error in it. please give solution for this problem