亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) php教程 php手冊(cè) 轉(zhuǎn)帖:PHP4(windows版本)中的COM函數(shù)

轉(zhuǎn)帖:PHP4(windows版本)中的COM函數(shù)

Jun 21, 2016 am 09:14 AM
application com gt quot word

window|函數(shù)

這幾天一直在寫(xiě)excel轉(zhuǎn)化成mysql,發(fā)現(xiàn)一篇文章,搜一下phpx論壇,沒(méi)有這個(gè)帖子,把它轉(zhuǎn)帖如下:


PHP4(windows版本)中的COM函數(shù)


  介紹

  內(nèi)置于PHP4里的COM函數(shù)對(duì)于我們?cè)趙in32環(huán)境下開(kāi)發(fā)程序是相當(dāng)有吸引力的,但是至今仍沒(méi)有多少相關(guān)的技術(shù)文檔。本文將以三個(gè)例子分

別處理 MS office 2000 Word 、 Excel 、 Adobe Distiller 來(lái)說(shuō)明如何在PHP中使用COM函數(shù)。

  COM技術(shù)是由Microsoft在幾年前提出并開(kāi)發(fā)的,本文中提到的相關(guān)名詞有OLE, OLE Automation, ActiveX, COM ,這些詞的意思都基本一

樣,都表示用一段封裝的代碼(對(duì)象)來(lái)完成一個(gè)windows 應(yīng)用程序的一些功能。 PHP4 COM 函數(shù)可以連接一個(gè)對(duì)象實(shí)例,并使用它的方法與

屬性。

如果你想使用下面的例子源碼,請(qǐng)參考一下我的配置。

Windows 98 - MS Office 2000
Apache 1.3.9 Windows
PHP4.02 Dev (08-20-00) Running as CGI


PHP4中的COM標(biāo)記

現(xiàn)在讓我們開(kāi)始吧,用PHP4的COM來(lái)實(shí)例化一個(gè)組件,需要 new 操作符和對(duì)象的 "OLE 程序標(biāo)識(shí)":


$instance = new COM("$identifier");

?>

因?yàn)镃OM是一個(gè)PHP4的保留字,它傳送這個(gè)對(duì)象的標(biāo)識(shí)給一個(gè)構(gòu)造函數(shù),現(xiàn)在得到了這個(gè)組件的一個(gè)實(shí)例,根據(jù)OOP類(lèi)的性質(zhì),我們可以很容易

地訪問(wèn)它的方法與屬性。

例如:


$instance->[Object]->[method1]->[method2]->..->[property];

?>

就是這么簡(jiǎn)單!

OOP的結(jié)構(gòu)在PHP下不能工作,(由于PHP語(yǔ)法的問(wèn)題,屬性的名字.值是非法字符,如點(diǎn)和圓括號(hào)等),所以PHP4提供了兩個(gè)相應(yīng)的函數(shù):


bool com_set(class com_object, string property name, string property_value);

mixed com_get(class com_object, string property_name);

?>

最后,PHP4也支持DCOM技術(shù),可以在遠(yuǎn)程計(jì)算機(jī)創(chuàng)建一個(gè)對(duì)象實(shí)例。


$Instance = new COM(string "Component name", string "remote_server_address");

?>

注意:這是用DCOM指令來(lái)設(shè)置PHP。在將來(lái),PHP開(kāi)發(fā)者提供Unix下對(duì)DCOM的支持。

標(biāo)識(shí)、方法和屬性

標(biāo)識(shí)是一個(gè)如下的字串:

MS Word: "Word.Application" or "Word.Application.9"
MS Excel: "Excel.Application" or "Excel.Sheet"
ADOBE Acrobat: "Exch.application" or "PdfDistiller.PdfDistiller"

  對(duì)于最后一個(gè)標(biāo)識(shí),我要指明的是,獲得正確的對(duì)象標(biāo)識(shí)名不是一件容易的事。如果你不能訪問(wèn)VBA文檔,你可以查找一下windows的注冊(cè)

表,在 HKEY_CLASSES_ROOT 中尋找一下,你就可以得到一些應(yīng)用程序的名字。在你的機(jī)器上有效的對(duì)象標(biāo)識(shí)放在 CLSID 子文件夾下。

  應(yīng)用程序一般會(huì)提供文檔說(shuō)明它的COM方法和屬性。在office2000中,你可以運(yùn)行程序,打開(kāi)VBA編輯器 ,選擇對(duì)象編輯器。輸入應(yīng)用程序

庫(kù)中的一個(gè)方法名或?qū)傩悦?,然后,在下面的窗口中用鼠?biāo)右鍵選擇一個(gè)類(lèi)或成員名稱(chēng),點(diǎn)幫助,你就會(huì)得到關(guān)于這個(gè)類(lèi)或成員的描述。你也

可以參考 MSDN。一個(gè) Excel 的例子如下: http://msdn.microsoft.com/library/officedev/off2000/xltocobjectmodelapplication.htm


用COM函數(shù)操作 MS Word

現(xiàn)在,我們開(kāi)始第一個(gè)例子吧:


#*********************************************************
# 本例來(lái)自Zend站點(diǎn),略有改動(dòng)
# 打開(kāi)一個(gè)word實(shí)例,并新建一個(gè)文檔Useless test.doc
# 輸入一行文字 "This is a test2..."
#*********************************************************

#實(shí)例化一個(gè)對(duì)象

$word = new COM("word.application") or die("Unable to instantiate Word");

#取得并顯示版本

print "Loaded Word, version {$word->Version}
";

#另一種方法去取得版本

$testversion = com_get($word->application,version);

print "Version using Com_get(): $testversion
";

#使其可見(jiàn)

$word->Visible = 1;

#創(chuàng)建新文件

$word->Documents->Add();

#寫(xiě)字符

$word->Selection->TypeText("This is a test...");

#保存

$word->Documents[1]->SaveAs("Useless test.doc");

#關(guān)閉

$word->Quit();

?>

你只要花幾分鐘來(lái)讀這個(gè)程序,并參考Word的OLE 技術(shù)文檔,你將學(xué)到幾乎是你在自己程序中所需的全部的操作。

MS Excel在使用PHP的COM函數(shù)

  如同上面的Word的例子一樣,你應(yīng)學(xué)習(xí)這個(gè)例子的同時(shí)參考Excel的Visual Basic 編輯器中的對(duì)象瀏覽器的幫助文檔。


#打開(kāi)workbook和它的sheet,
#本例使用一個(gè)電子表格是Excel安裝時(shí)自帶的SOLVSAMP.XLS

$workbook = "C:Program FilesMicrosoft officeOfficeSamplesSOLVSAMP.XLS";
$sheet = "Quick Tour";

#實(shí)例化一個(gè)組件的對(duì)象
$ex = new COM("Excel.sheet") or Die ("Did not connect");

#取程序名稱(chēng)和版本
print "Application name:{$ex->Application->value}
" ;
print "Loaded version: {$ex->Application->version}
";

#打開(kāi)工作本使我們可使用它
$wkb = $ex->application->Workbooks->Open($workbook) or Die ("Did not open");

#預(yù)保存原來(lái)的工作本,創(chuàng)建一個(gè)工作本的復(fù)本
$ex->Application->ActiveWorkbook->SaveAs("Ourtest");
#$ex->Application->Visible = 1; #本句去注釋讓Excel可見(jiàn)

# 讀寫(xiě)一個(gè)單元格在一個(gè)新的工作表中
# 我們可以讀到這個(gè)單元格 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

#最后,用新值重新計(jì)算這個(gè)單元格
$sheets->Calculate;
#必須的如果要計(jì)算,手動(dòng)則是可選的
#可看到效果總價(jià)值(E13單元格)
$cell = $sheets->Cells(13,5) ; #Select the cell (Row Column number)
$number = Number_format($cell->value);
print "New Total cost =$$number - was $47,732 before.
";
#根據(jù)計(jì)算公式,廣告影響了公司的開(kāi)銷(xiāo),這里將顯示 $57,809

#使用Excel內(nèi)建的函數(shù)
# PMT(percent/12 months,Number of payments,Loan amount)
$pay = $ex->application->pmt(0.08/12,10,10000);
$pay = sprintf("%.2f",$pay);
print "Monthly payment for $10,000 loan @8% interest /10 months: $ $pay
";

#Should print monthly payment = $ -1,037.03

#可選,保存
$ex->Application->ActiveWorkbook->SaveAs("Ourtest");
#關(guān)閉,不提問(wèn)
$ex->application->ActiveWorkbook->Close("False");
unset ($ex);

?>

  這個(gè)例子讓你的PHP與Excel一同工作了,當(dāng)然,也有更多的對(duì)象可以使用,訪問(wèn)一個(gè)自已寫(xiě)的OOP封裝類(lèi)也與訪問(wèn)excel一樣容易。

用PHP的COM訪問(wèn) Adobe Distiller

  這最后一個(gè)例子不是MS程序了,如果你的程序有一個(gè)PostScript文件,你會(huì)對(duì)這個(gè)有興趣的,改寫(xiě)(蒸餾)它成為一個(gè)PDF文檔. Adobe 有一

個(gè)程序叫 Distiller ,它可以生成一個(gè)實(shí)例。代碼如下:


$pdf = new COM("pdfdistiller.pdfdistiller.1");

?>

  有一點(diǎn)要注意的,是在Distiller 的文檔中給出的這個(gè)OLE標(biāo)識(shí)名 "pdfdistiller" 是無(wú)效的。

蒸餾一個(gè)文件的最基本的方法是:


$pdf->FileToPdf ($psfile, strOutputPDF '', strJobOptions "");

?>

這 $psfile 是這個(gè)PostScript的文件名, strOutputPDF 是輸出文件PDF的文件名。 StrJobOptions 是Distiller的參數(shù)文件名,最后兩個(gè)參數(shù)

是可選的,默認(rèn)是同一名字。 這PS文件名與PDF文件名,使用這個(gè)默認(rèn)的Job options 文件。例如:


$pdf->FileToPdf ($psfile, "", "");
#這兒$psfile 可以是 Myfile.ps 將返回 Myfile.pdf 文件。

?>

在Distiller中有更多的方法和屬性能被用。如果你感興趣,請(qǐng)參考一下Adobe的技術(shù)文檔。


中止/可能的問(wèn)題

  如果你的代碼中發(fā)生了什么錯(cuò)誤,你可能會(huì)創(chuàng)建了一個(gè)實(shí)例,但沒(méi)有正常地關(guān)閉它。最糟的是,這個(gè)應(yīng)用程序可能被這個(gè)實(shí)例所保持,結(jié)

果,在你的程序列表中就存在多份這個(gè)程序的副本,即使你更正了這個(gè)錯(cuò)誤也會(huì)干擾你的結(jié)果。解決方法是:修正一個(gè)bug以來(lái)要及時(shí)清除它們

在你重新開(kāi)始運(yùn)行之前,用 并結(jié)束任務(wù)。同樣的原因,在你的代碼最后,也要及時(shí)關(guān)閉這個(gè)程序并刪除這個(gè)實(shí)例。

你有一些技巧在處理 com_get 和 com_set的異常時(shí)。例如:
$Version = Com_get($instance->Application,"Version");

將會(huì)在Word中工作但在Excel中會(huì)產(chǎn)生一個(gè)錯(cuò)誤。

有一些對(duì)象在PHP4中是不能實(shí)例化的,這是因?yàn)檫@個(gè)程序要一個(gè)自定義的接口,但PHP4不支持。


為什么我們要用它?

  我希望這三個(gè)例子可以給你一些思考的線索,PHP的COM允許你在PHP的腳本中訪問(wèn)windows4的程序。這個(gè)代碼比ASP簡(jiǎn)單并且能集成其它的

PHP對(duì)數(shù)據(jù)庫(kù)強(qiáng)大的支持功能。Microsoft 在各個(gè)方面都大力銷(xiāo)售這個(gè)COM 技術(shù),在不同的名稱(chēng)和結(jié)構(gòu)下,如 COM+(Combine COM with

Microsoft Transaction Server MTS), ADO, OLE DB, OWC, Windows DNA, 等等。 PHP 和 Apache的結(jié)合,提供了一個(gè)開(kāi)放源碼的解決方案。



本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72
word自動(dòng)換行怎麼取消 word自動(dòng)換行怎麼取消 Mar 19, 2024 pm 10:16 PM

在word文件中進(jìn)行編輯內(nèi)容時(shí)可能會(huì)自動(dòng)換行,如果這時(shí)候不調(diào)整的話,對(duì)於我們的編輯會(huì)帶來(lái)很大的影響,讓人十分頭疼,這是怎麼回事呢?其實(shí)是標(biāo)尺的問(wèn)題,下面小編就介紹word自動(dòng)換行怎麼取消的解決方法,希望能幫助大家!開(kāi)啟Word文檔,輸入文字後,嘗試複製並貼上時(shí)可能會(huì)導(dǎo)致文字跳到新行,這時(shí)需調(diào)整設(shè)定以解決該問(wèn)題。 2.要解決這個(gè)問(wèn)題,我們首先要知道有這個(gè)問(wèn)題的原因。這時(shí)我們點(diǎn)選工具列下的視圖。 3.然後再點(diǎn)選下面的「標(biāo)尺」選項(xiàng)。 4.這時(shí)候我們會(huì)發(fā)現(xiàn),文檔的上方出現(xiàn)了一個(gè)標(biāo)尺,標(biāo)尺上面有幾個(gè)錐形標(biāo)

Word怎麼顯示標(biāo)尺以及標(biāo)尺的操作方法詳解! Word怎麼顯示標(biāo)尺以及標(biāo)尺的操作方法詳解! Mar 20, 2024 am 10:46 AM

我們?cè)谑褂肳ord的時(shí)候,為了編輯內(nèi)容更好美觀,我們常常會(huì)使用標(biāo)尺。要知道,在Word中的標(biāo)尺包括水平標(biāo)尺和垂直標(biāo)尺,用於顯示和調(diào)整文件的頁(yè)邊距、段落縮排、製表符等。那麼,Word中的標(biāo)尺怎麼顯示出來(lái)的呢?下面,我就來(lái)教大家設(shè)定標(biāo)尺的顯示方法。有需要的同學(xué)趕快收藏起來(lái)吧!步驟如下:1、首先,我們需要把word標(biāo)尺調(diào)出來(lái),預(yù)設(shè)的word文件是不顯示word標(biāo)尺的,我們只需要點(diǎn)選word中的【檢視】的按鈕。 2、然後,我們找到【標(biāo)尺】的選項(xiàng),勾選就可以了。這樣一來(lái),word標(biāo)尺就被我們調(diào)出來(lái)了!是不是

word文檔怎麼加手寫(xiě)簽名 word文檔怎麼加手寫(xiě)簽名 Mar 20, 2024 pm 08:56 PM

Word文件由於功能的強(qiáng)大被大家廣泛使用,word裡不但可以插入各種格式,比如圖片和表格等等,現(xiàn)在為了文件的完整性真實(shí)性,好多文件都需要在文檔末尾加入手工簽名,聽(tīng)起來(lái)這麼複雜的問(wèn)題要怎麼解決呢,今天小編就教大家word文檔怎麼加手寫(xiě)簽名。使用掃描器、相機(jī)或手機(jī)對(duì)手寫(xiě)簽名進(jìn)行掃描或拍攝,然後透過(guò)PS或其他圖片編輯軟體對(duì)圖片進(jìn)行必要的裁切處理。 2.在要插入手寫(xiě)簽名的Word文件中選擇“插入—圖片—來(lái)自文件”,選擇裁切好的手寫(xiě)簽名。 3.滑鼠雙擊手寫(xiě)簽名圖片(或右鍵圖片選擇「設(shè)定圖片格式」),彈出「設(shè)定圖

如何為Word設(shè)定頁(yè)邊距 如何為Word設(shè)定頁(yè)邊距 Mar 19, 2024 pm 10:00 PM

辦公室軟體中Word是我們最常用的軟體之一,我們製作的文字文檔一般都會(huì)用Word進(jìn)行操作,有些文檔按要求還需要提交紙質(zhì)版,在進(jìn)行打印之前,一定要把佈局設(shè)置好,才能呈現(xiàn)出更好的效果。那麼問(wèn)題來(lái)了,Word設(shè)定頁(yè)邊距的方法是什麼呢?我們有具體的課程講解為大家解決疑惑。 1.開(kāi)啟或新建一個(gè)word文檔,點(diǎn)選選單列上的「頁(yè)面佈局」選單。 2、點(diǎn)選「頁(yè)面設(shè)定」選項(xiàng)的「頁(yè)邊距」按鈕。 3.在清單中選擇常用的頁(yè)邊距。 4.如果清單中沒(méi)有合適的頁(yè)邊距,按一下「自訂邊距」。 5.彈出「頁(yè)面設(shè)定」對(duì)話框,在「頁(yè)邊距」選項(xiàng)分別輸

Word怎麼繪製表格 Word怎麼繪製表格 Mar 19, 2024 pm 11:50 PM

  word是個(gè)很強(qiáng)大的辦公室軟體,相比較wps來(lái)說(shuō),word細(xì)節(jié)處理比較有優(yōu)勢(shì),特別是當(dāng)文件表述過(guò)於複雜,一般使用word會(huì)更加省心。所以,當(dāng)你步入社會(huì)以後,一定要學(xué)習(xí)一些word使用的小技巧。前段時(shí)間表弟問(wèn)我一個(gè)這樣的問(wèn)題,常??磩e人使用word時(shí)繪製表格呢,感覺(jué)挺高大上的。當(dāng)時(shí)我就笑了,看似高大上的內(nèi)容,其實(shí)操作起來(lái)只需要3個(gè)步驟而已,你知道Word要怎麼繪製表格嗎?  1.開(kāi)啟word,選取要插入表格的地方,在上方選單列中找到「插入」選項(xiàng)?! ?.點(diǎn)選「表格」選項(xiàng),會(huì)出現(xiàn)密密麻麻的小正方體

word中底紋設(shè)定在哪 word中底紋設(shè)定在哪 Mar 20, 2024 am 08:16 AM

我們平常常使用word來(lái)辦公,但是你是否知道word中底紋設(shè)定在哪呢?今天就來(lái)跟大家分享具體的操作步驟,朋友們快來(lái)看看吧! 1.首先,開(kāi)啟word文檔,選取一段需要新增底紋的文字段落訊息,然後點(diǎn)選工具列上的【開(kāi)始】按鈕,找到段落區(qū)域,點(diǎn)選右側(cè)的下拉按鈕,(如下圖紅色圈出部分所示)。 2.點(diǎn)選下拉框按鈕之後,在彈出的選單選項(xiàng)中,點(diǎn)選【邊框和底紋】選項(xiàng),(如下圖紅色圈出部分所示)。 3.在彈出的【邊框和底紋】對(duì)話框中,點(diǎn)選【底紋】的這個(gè)選項(xiàng),(如下圖紅色圈出部分所示)。 4.在填滿的那一欄,選擇顏色

word虛線怎麼畫(huà) word虛線怎麼畫(huà) Mar 19, 2024 pm 10:25 PM

word是我們辦公室常會(huì)用到的軟體,裡邊有很多功能,可以方便我們的操作,例如:大篇文章的話,我們可以使用裡邊的查找功能,知道全文裡邊某個(gè)字錯(cuò)了,可以直接替換不用一個(gè)個(gè)去更改了;向上級(jí)交文檔的時(shí)候可以把文檔美化的更好看等等操作,下面小編就來(lái)給大家分享word虛線怎麼畫(huà)的步驟,大家一起來(lái)學(xué)習(xí)吧! 1.首先,我們打開(kāi)電腦上的word文檔,如下圖所示:2.然後,在文檔裡邊輸入一串文字,如下圖紅色圈出部分所示:3.接下來(lái),按住【ctrl+A】選取全部文字,如下圖紅色圈出部分所示:4.點(diǎn)選選單列上邊的【開(kāi)始】

Word怎麼加底線 Word怎麼加底線 Mar 20, 2024 pm 03:16 PM

Word作為我們非常常用的文字處理軟體,無(wú)時(shí)無(wú)刻不充斥在我們的生活學(xué)習(xí)和工作當(dāng)中。當(dāng)然,想要利用好Word來(lái)編輯文字,地基一定要打好。那今天小編就帶大家一起來(lái)學(xué)習(xí)Word怎麼加底線,可以跟小編一起操作,非常的簡(jiǎn)單。 1,首先,我們打開(kāi)我們需要編輯的文件,在這裡我們以下圖為例。 2,用滑鼠選取我們需要編輯的文字,在彈出的選項(xiàng)卡里我們選擇【U】圖標(biāo),操作如圖所示:3,我們來(lái)看一看效果如何:4,其實(shí)我們可以採(cǎi)用一個(gè)更加方便快捷的方法,就是利用鍵盤(pán)上的組合鍵【ctrl】+【U】,即可為你的文字加上下

See all articles