php4 com的ms word例子
#*****************************************************
# 這個例子來自zend站點,并做了一點修改。
# 將會打開一個word的實例,
# 輸入一行“this is a test...”
# 存為“useless test.doc”。
#*****************************************************
#實例化一個word控件
$word = new com("word.application") or die("不能實例化word");
#取得并輸出版本號
print "載入word, 版本 {$word->version}
";
#用com_get取得版本號
$testversion = com_get($word->application,version);
print "用com_get()取得的版本: $testversion
";
#讓word可見
$word->visible = 1;
#打開一個新文檔
$word->documents->add();
#寫
$word->selection->typetext("this is a test...");
#存
$word->documents[1]->saveas("useless test.doc");
#手工關閉word,如果你想看到文檔則注釋下面這行
$word->quit();
?>
php4 com的ms excel例子
#設置工作簿,
#在這里我們用excel安裝時自帶的:solvsamp.xls
$workbook = "c:program filesmicrosoft officeofficesamplessolvsamp.xls";
$sheet = "quick tour";
#實例化工作表控件
$ex = new com("excel.sheet") or die ("did not connect");
#取得程序名稱和版本
print "程序名稱:{$ex->application->value}
" ;
print "版本:{$ex->application->version}
";
#打開工作簿
$wkb = $ex->application->workbooks->open($workbook) or die ("did not open");
#另存一份,這樣就不會破壞原來的文件了
$ex->application->activeworkbook->saveas("ourtest");
#$ex->application->visible = 1; #去掉注釋可以讓excel可見
#讀取一個單元格的內容(e11)
$sheets = $wkb->worksheets($sheet); #選擇工作表
$sheets->activate; #激活
$cell = $sheets->cells(11,5) ; #選擇單元格(行列號)
$cell->activate; #激活
print "old value = {$cell->value}
"; #打印內容:10000
$cell->value = 15000; #改為15000
print "new value = {$cell->value}
"; #打印新內容:15000
#最后,重新計算工作表
$sheets->calculate; #當計算選項是手工時需要
#看看結果total cost(單元格e13)
$cell = $sheets->cells(13,5) ; #選擇單元格
$number = number_format($cell->value);
print "new total cost =$$number - was $47,732 before.
";
#將會打印$57,809
#使用excel的內置函數:
#function: 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
";
#將會打印monthly payment = $ -1,037.03
#保存改過的工作簿
$ex->application->activeworkbook->saveas("ourtest");
#關閉所有工作簿
$ex->application->activeworkbook->close("false");
unset ($ex);
?>
警告/可能的問題
如果你的代碼中有錯誤,你就有可能實例化了一個對象而沒有關閉。結果當你改正了錯誤后有可能已經存在幾個實例了,也許會干擾你的結果。解決:當改正了代碼的錯誤之后,清除(
當使用com_get和com_set時你可能會遇到一些奇怪的現象。例如:為word使用$version = com_get($instance->application,"version");時產生一個excel的錯誤。
有些對象不能在php4中實例化,這是因為這些對象需要一個php4 com不支持的接口。
為什么用它?
希望這幾個例子能給你一些啟發。php com允許你在php代碼里連接許多windows程序。這些代碼比asp更容易并且可以和php的數據庫函數集成在一起使用。微軟使用了一些不同的名稱到處推廣com技術,例如com+, ado, ole db, owc, windows dna等等。php和apache給這些混淆提供了一個開放的解決方案。
原文有三個例子,最后一個因為自己對pdf不是很熟所以沒有翻譯。
新聞熱點
疑難解答