[摘要] 本文主要介紹基于COM的PHP與Microsoft Office的應用集成技術,并通過具體的應用示例說明其編程模式。
[關鍵詞] Web;Office;PHP;COM;應用集成技術
一、引言
目前,Microsoft Office的應用已十分廣泛,Web應用的發展也相當迅速(如電子商務、電子政務等)。在某些Web應用中,需要集成一定的Microsoft Office功能,如自動生成Word文檔、Excel工作表或PowerPoint演示文稿等。為此,可使用COM技術并結合編程加以實現。
PHP是目前流行的一種Web編程語言,具有開放源碼、完全免費、可跨平臺運行等優點,已成為各類Web應用的首選開發語言之一。因此,本文主要介紹基于PHP的Web應用集成Microsoft Office功能的基本技術。
二、COM技術簡介
COM(Component Object Model,組件對象模型)是微軟公司所推出并已得到廣泛應用的一種組件標準。所謂組件,其實就是包含在動態鏈接庫或可執行文件中的二進制的可執行代碼。在一個組件中,可提供一個或多個對象,且每個對象均可擁有相應的方法、屬性與集合。
通過COM組件,可為應用程序、操作系統或其他組件提供某些服務。利用COM技術,也可實現應用程序之間的交互與無縫連接,共同完成復雜的功能,并使之具有良好的可擴展性與可維護性。
在程序中,要使用組件所提供的某個對象,首先要創建該對象的實例,然后通過對象實例訪問相應的方法、屬性與集合。在完成所需要的操作后,再將對象實例刪除掉,以釋放其所占用的內存空間。
三、PHP的COM功能
在Windows平臺下,PHP提供了內置的COM功能。利用PHP的COM類可創建有關組件對象的實例,基本格式為:
$obj = new COM(\"ProgID\");
其中,COM為類名,ProgID為組件對象名,$obj為組件對象實例變量。通過實例變量并使用“->”運算符,即可引用組件對象的有關屬性、集合與方法。若將實例變量賦為空值(NULL),則可清除相應的對象實例。
四、PHP與Microsoft Office的應用集成
Microsoft Office所包含的各個軟件均有基于COM技術的組件對象,如Word、Excel、PowerPoint的組件對象分為Word.Application、Excel.Application、PowerPoint.Application。在PHP中,利用這些組件對象,即可集成相應的Microsoft Office應用。
關于Microsoft Office中有關組件對象的模型及其用法,請查閱其技術文檔或有關資料。在此,僅通過實例說明在PHP中集成Microsoft Office應用的基本方法與編程技術。
1.PHP與Word的應用集成
在PHP中集成Word功能,可動態地創建相應的文檔,并在其中添加有關的內容,或實現相關的操作,如打印、保存等。
實例一:動態生成Word文檔,并提供下載鏈接。
$MyPath=dirname(stripslashes($_SERVER[\"PATH_TRANSLATED\"]));
$MyTFN=\"MyTest.doc\"; //測試文檔名
$MyWord=new COM(\"Word.Application\") or die(\"錯誤:無法啟動Word\");
$MyWord->Visible=true;//顯示Word窗口
$MyWord->Documents->Add();//新建文檔
$MyText=\"測試內容abc...\";
$MyWord->Selection->TypeText($MyText);//輸出內容
$MyWord->Selection->TypeParagraph();//插入段落
$MyRange=$MyWord->Selection->Range;
$MyTable=$MyWord->ActiveDocument->Tables->Add($MyRange,3,5);//插入表格
$MyCell=$MyTable->Cell(1,1);
$MyCell->Range->InsertAfter(\"Test-1-1\");
$MyWord->ActiveDocument->SaveAs($MyPath.\"\\\\\".$MyTFN);//保存文檔
$MyWord->Quit();//關閉Word窗口
$MyWord=NULL;
echo \"下載\".$MyTFN.\"文檔\";
?>
2.PHP與Excel的應用集成
在PHP中集成Excel功能,可動態地創建相應的電子表格文件,并完成相關的各種操作。這對于各種報表的生成來說,是較為實用的一種方案。
實例二:動態生成Excel文件,并提供下載鏈接。
$MyPath=dirname(stripslashes($_SERVER[\"PATH_TRANSLATED\"]));
$MyTFN=\"MyTest.xls\";
$MyExcel=new COM(\"Excel.Application\") or die(\"錯誤:無法啟動Excel\");
$MyExcel->Visible=true;
$MyExcel->Workbooks->Add();
$MyExcel->Worksheets[1]->Cells[1][1]->Value=\"Test-1-1\";
$MyExcel->ActiveWorkbook->SaveAs($MyPath.\"\\\\\".$MyTFN);
$MyExcel->Quit();
$MyExcel=NULL;
echo \"下載\".$MyTFN.\"文件\";
?>
3.PHP與PowerPoint的應用集成
在PHP中集成PowerPoint功能,同樣可動態地創建相應的演示文稿,并完成相關的各種操作。
實例三:動態生成PowerPoint文件,并提供下載鏈接。
$MyPath=dirname(stripslashes($_SERVER[\"PATH_TRANSLATED\"]));
$MyTFN=\"MyTest.ppt\";
$MyPP=new COM(\"PowerPoint.Application\") or die(\"錯誤:無法啟動PowerPoint\");
$MyPP->Visible=true;
$pptPres=$MyPP->Presentations->Add();
$aSlide=$pptPres->Slides->Add(1,1);//插入第1張幻燈片,采用1號樣式
$aSlide->Shapes[1]->TextFrame->TextRange->Text = \"Test123...\";
$aSlide->Shapes[2]->TextFrame->TextRange->Text = \"Testabc...\";
$MyPP->ActivePresentation->SaveAs($MyPath.\"\\\\\".$MyTFN);
$MyPP->ActivePresentation->close();
$MyPP->Quit();
$MyPP=NULL;
echo \"下載\".$MyTFN.\"文件\";
?>
五、結束語
在Web應用中集成一定的Microsoft Office功能,有利用進一步提高應用的水平,更好地滿足用戶的實際需要。利用本文所述的方法,可在PHP中動態地生成相應的Word文檔、Excel工作表或PowerPoint演示文稿。在此基礎上,再進行相應的研究與改進,即可實現更加復雜的操作,如自動進行排版、打印等。
參考文獻:
[1]曹軼群孫一江張永學:PHP高級開發技術與應用[M].北京:清華大學出版社,2002.168~170
[2]Microsoft Office2000的VBA幫助文檔