Heim >php教程 >php手册 >PHP4中使用COM (Windows)--例子

PHP4中使用COM (Windows)--例子

WBOY
WBOYOriginal
2016-06-21 09:05:23915Durchsuche

window

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不是很熟所以没有翻译。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn