1、第一步首先确认com模块是不是开启,phpinfo里面如果有com_dotnet模块,说明已开启,如果没有,修改php.ini,com.allow_dcom=true
2、php官方网站说,php5.4.5之前,com模块是内置的,其实也不一定全是,官网下的php5.3.39,com模块就没有内置。如果不是内置模块的话,php.ini加上,前提你的ext文件夹下,有该扩展。
这个时候需要在PHP.INI里面增加一行extension=php_com_dotnet.dll
具体的PHP代码:
functionphp_Word($wordname,$htmlname,$content)
{
$url=$_SERVER['HTTP_HOST'];
$url='';
$url=$url.$_SERVER['PHP_SELF'];
$url=dirname($url)."/";
//$url=substr(realpath("index.php"),0,strlen(realpath("index"))-9);获取本地文件路径
$word=newCOM("word.application")ordie("UnabletoinstanciateWord");
//显示目前正在使用的Word的版本号
//echo"LoadingWord,v.{$word->Version}";
//把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真),
$word->Visible=0;//如果使用1,每运行一次,word就会自动打开,比较麻烦,建议关闭
//---------------------------------读取Word内容操作START-----------------------------------------
//打开一个word文档
//$word->Documents->Open($url.$wordname);
$word->Documents->Open(realpath($wordname));
//将filename.doc转换为html格式,并保存为html文件
$word->Documents[1]->SaveAs(dirname(__FILE__)."/".$htmlname,8);
//获取htm文件内容并输出到页面(文本的样式不会丢失)
//$content=file_get_contents($url.$htmlname);
$content=file_get_contents(realpath($htmlname));//自已新建一个html文档
//echo$content;
//获取word文档内容并输出到页面(文本的原样式已丢失)
//$content=$word->ActiveDocument->content->Text;
//echo$content;
//关闭与COM组件之间的连接
$word->Documents->close(true);
$word->Quit();
$word=null;
unset($word);
}
php_Word("test.doc","test.html","写入word的内容");
php_Word("test1.doc","test1.html","写入word的内容");