1、第一步首先确认com模块是不是开启,phpinfo里面如果有com_dotnet模块,说明已开启,如果没有,修改php.ini,com.allow_dcom = true
2、php官方网站说,php5.4.5之前,com模块是内置的,其实也不一定全是,官网下的php 5.3.39,com模块就没有内置。如果不是内置模块的话,php.ini加上,前提你的ext文件夹下,有该扩展。
这个时候需要在PHP.INI里面增加一行extension=php_com_dotnet.dll
具体的PHP代码:
function php_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 = new COM("word.application") or die("Unable to instanciate Word");
//显示目前正在使用的Word的版本号
// echo "Loading Word, 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的内容");