(转)最详细的php使用com读取word文件,并且解决读取过程中乱码问题,doc/docx都适用,适用于thinkph

发布时间:2019-04-26 14:23:30编辑:文明阅读(942)

    一,首先要确认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;

    }

    --------------------- 

    作者:qq_36100763 

    来源:CSDN 

    原文:https://blog.csdn.net/qq_36100763/article/details/86532006 


关键字phpcomword

    还没有小伙伴评论,快来抢沙发啦~~!