一,首先要确认php版本,最好是高于5.6
二,将以下两行代码放入php.ini中并且重启
//这个是开启扩展
extension=php_com_dotnet.dll
//这个是COM扩展里自带的,只需将前面的;去掉就可以了
com.allow_dcom = true
三,自己编写一个三方类库文件,phpcom.php,如下:
<?php
class PHPcom {
/**
* 返回word内容,和字数(字符数),版本
* @param $url
* @return array
*/
public static function php_com($url)
{
$word = new COM("word.application") or die("Unable to instantiate Word");
//打开路径为URL的word,doc或docx都可以
$word->Documents->OPen($url);
//读取内容
$test= $word->ActiveDocument->content->Text;
//统计字数
$num = strlen($test);
//解决读取过程中乱码问题
$content= iconv('GB2312', 'UTF-8', $test);
//查看版本
$word_wersion = $word->Version;
//是否要打开文件,0代表否,1代表是
$word->Visible = 0;
//关闭word句柄
$word->Quit();
//释放对象
$word = null;
return [
'num'=>$num/2,
'word_wersion'=>$word_wersion,
'content'=>$content
];
}
}
?>
四,在thinkphp的根目录下找到vendor文件夹,没有就自己创建一个
五,在vendor文件夹下创建phpcom文件夹,然后把phpcom.php文件放进去
ps:至此,准备工作就做好了,接下来我们就可以在常用函数文件(common.php)里写一个自定义函数了
六,在公共函数类common.php中写一个方便调用的方法
function read_com_word($url=''){
//加载类库文件
vendor("phpcom.phpcom");
//剪切url目录(这是我自己的目录问题)
$url = strstr($url,"uploads");
$url = 'http://localhost/'.$url;
//然后静态调用php_com方法就可以了
$result = PHPcom::php_com($url);
return $result;
}
七:注意,url有一个地方需要修改,就是你们传进来的url千万不能是绝对地址,不能是D:\WWW\这种,,一定要自己框架的路由地址,比如localhost/…,不然会出现错误,因为用绝对地址读取word内容,只能读取一次,然后word就会被锁定,然后就无法读取了,下面附上本人血的经验
八,现在php使用com读取word的流程就走完了,够详细吧?如果上面有什么不到位的地方,还请各路大神指点一下。
————————————————
版权声明:本文为优快云博主「qq_36100763」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_36100763/article/details/86532006