內建於PHP4裡的COM函數對於我們在win32環境下開發程式是相當有吸引力的,但是至今仍沒有多少相關的技術文檔。本文將以三個例子分別處理 MS office 2000 Word 、 Excel 、 Adobe Distiller 來說明如何在PHP中使用COM函數。
COM技術是由Microsoft在幾年前提出並開發的,本文中提到的相關名詞有OLE, OLE Automation, ActiveX, COM ,這些詞的意思都基本一樣,都表示用一段封裝的代碼(對象)來完成一個windows 應用程式的一些功能。 PHP4 COM 函數可以串連一個對象執行個體,並使用它的方法與屬性。
如果你想使用下面的例子源碼,請參考一下我的配置。
Windows 98 - MS Office 2000
Apache 1.3.9 Windows
PHP4.02 Dev (08-20-00) Running as CGI
PHP4中的COM標記
現在讓我們開始吧,用PHP4的COM來執行個體化一個組件,需要 new 操作符和對象的 "OLE 程式標識":
$Instance = new COM(string "Component name", string "remote_server_address");
?>
注意:這是用DCOM指令來設定PHP。在將來,PHP開發人員提供Unix下對DCOM的支援。
標識、方法和屬性
標識是一個如下的字串:
MS Word: "Word.Application" or "Word.Application.9"
MS Excel: "Excel.Application" or "Excel.Sheet"
ADOBE Acrobat: "Exch.application" or "PdfDistiller.PdfDistiller"
# 讀寫一個儲存格在一個新的工作表中
# 我們可以讀到這個儲存格 E11 (Advertising in the 4th. Quarter)
$sheets = $wkb->Worksheets($sheet); #Select the sheet
$sheets->activate; #Activate it
$cell = $sheets->Cells(11,5) ; #Select the cell (Row Column number)
$cell->activate; #Activate the cell
print "Old Value = {$cell->value}
"; #Print the value of the cell:10000
$cell->value = 15000; #Change it to 15000
print "New value = {$cell->value}
";#Print the new value=15000
#最後,用新值重新計算這個儲存格
$sheets->Calculate;
#必須的如果要計算,手動則是可選的
#可看到效果總價值(E13儲存格)
$cell = $sheets->Cells(13,5) ; #Select the cell (Row Column number)
$number = Number_format($cell->value);
print "New Total cost =$$number - was ,732 before.
";
#根據計算公式,廣告影響了公司的開銷,這裡將顯示 ,809
我希望這三個例子可以給你一些思考的線索,PHP的COM允許你在PHP的指令碼中訪問windows4的程式。這個代碼比ASP簡單並且能整合其它的PHP對資料庫強大的支援功能。Microsoft 在各個方面都大力銷售這個COM 技術,在不同的名稱和結構下,如 COM+(Combine COM with Microsoft Transaction Server MTS), ADO, OLE DB, OWC, Windows DNA, 等等。 PHP 和 Apache的結合,提供了一個開放源碼的解決方案。