PHP 调用COM组件问题求助,高分悬赏,求各位高手或有相似问题解决经历的同学看看,不胜感谢!

php文件如下:<?php$docname="Ask";functionw2h($name){echo"start\n";$word=newCOM("word.appli... php文件如下:
<?php
$docname="Ask";
function w2h($name){
echo "start\n";
$word = new COM("word.application") or die("Can't start Word!");
// 显示目前正在使用的Word的版本号
echo "Loading Word, v. {$word->Version}<br>";

// 把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真)
// to open the application in the forefront, use 1 (true)
$word->Visible = 1;
//Open一个文档
try {
$doc=$word->Documents->Open("D:\\web\\online\\doc\\".$name.".doc");
$doc->SaveAs("D:\\web\\online\\html\\".$name.".html",8);
echo "doc saved\n";
} catch (Exception $e) {
echo "<pre>".$e->getMessage()."</pre>";
}
// 关闭与COM组件之间的连接
$word->Quit();
echo $name.".html";
return $name.".html";
}
w2h($docname);
?>
报错:
Fatal error: Call to a member function SaveAs() on a non-object in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\online\word.php on line 23

可是我已经声明对象了啊:
$word = new COM("word.application") or die("Can't start Word!");
如能解决再追加50分,在线等。
展开
 我来答
cmoooo
2013-06-16 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:677万
展开全部
$word->Documents是一个数组,这个数组里当然没有SaveAs对象。

你应该:$word->Documents[0]->SaveAs("D:\\web\\online\\html\\".$name.".html",8);

另外,SaveAs里面的地址不必要用反斜杠,用斜杠就可以。

下面的是官方手册,你在页面中用浏览器自带的搜索功能(ctrl+F)搜索SaveAs就可以看到它的爽正确用法。

参考资料:
【The COM class】 http://www.php.net/manual/zh/class.com.php
追问
首先感谢你的回答,按照你的方式修改后,又出现下面报错:
Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft WordDescription: 集合所要求的成员不存在。' in C:\Program Files\...
追答
看来那个Dodument后面跟的或许不是[0],可能是[1]。

另外,这种提示已经差不多告诉清楚你的错误发生在什么地方了,比如后面的on line XX,那个XX就是错误发生的具体行数,另外,还有前面的详细错误描述,你的这套COM组件代码,最好是放在

try catch 语句中执行,能够捕获其异常。

另外,你追问的时候并没有把具体行的哪个代码写出来,我也有点晕,你最好是把你的代码和错误截图出来发,或者是提供你的QQ,我加你远程看看
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
ChatGpt帮你想办法
2013-06-15
知道答主
回答量:42
采纳率:0%
帮助的人:19.3万
展开全部
$doc=$word->Documents->Open("D:\\web\\online\\doc\\".$name.".doc");
$doc->SaveAs("D:\\web\\online\\html\\".$name.".html",8);
注意看这里 你要打开的文件 路径是否正确?为什么都用双斜线?
追问
这个没问题,双斜线目的是取消转义符'/'
追答
路径用的是双引号,怎么会有转义呢 亲
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式