首页 > 编程语言 >PHP获取Word文档 docx文件内容

PHP获取Word文档 docx文件内容

时间:2023-09-21 13:34:08浏览次数:46  
标签:node docx return Element PhpWord PhpOffice ele Word PHP

1.下载 库

composer require phpoffice/phpword

2.写代码

2.1引入

点击查看代码
use PhpOffice\PhpWord\IOFactory; 
use PhpOffice\PhpWord\Element\TextRun;
use PhpOffice\PhpWord\Element\Text;
use PhpOffice\PhpWord\Element\Paragraph;

2.2

点击查看代码
            //795新增代码
         
        $phpWord = IOFactory::load($filePath);
        // $section = $phpWord->getSections();
        var_dump($this->getNodeContent($phpWord)) ;
        die;
  //795新增代码  END

2.3

点击查看代码
 //++++-----795新增代码-------------+++++++
        
         
        /**
         * 根据word主节点获取分节点内容
         * @param $word
         * @return array
         */
        public function getNodeContent($word)
        {
            $return = [];
            //分解部分
            foreach ($word->getSections() as $section)
            {
                if ($section instanceof \PhpOffice\PhpWord\Element\Section) {
                    //分解元素
                    foreach ($section->getElements() as $element)
                    {
                        //文本元素
                        if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) {
                            $text = '';
                            foreach ($element->getElements() as $ele) {
                                $text .= $this->getTextNode($ele);
                            }
                            $return[] = $text;
                        }
                        //表格元素
                        else if ($element instanceof \PhpOffice\PhpWord\Element\Table) {
                            foreach ($element->getRows() as $ele)
                            {
                                $return[] = $this->getTableNode($ele);
                            }
                        }
                    }
                }
            }
            return $return;
        }
         
        /**
         * 获取文档节点内容
         * @param $node
         * @return string
         */
        public function getTextNode($node)
        {
            $return = '';
            //处理文本
            if ($node instanceof \PhpOffice\PhpWord\Element\Text)
            {
                $return .= $node->getText();
            }
            //处理图片
            else if ($node instanceof \PhpOffice\PhpWord\Element\Image)
            {
                $return .= $this->pic2text($node);
            }
            //处理文本元素
            else if ($node instanceof \PhpOffice\PhpWord\Element\TextRun) {
                foreach ($node->getElements() as $ele) {
                    $return .= $this->getTextNode($ele);
                }
            }
            return $return;
        }
         
        /**
         * 获取表格节点内容
         * @param $node
         * @return string
         */
        public function getTableNode($node)
        {
            $return = '';
            //处理行
            if ($node instanceof \PhpOffice\PhpWord\Element\Row) {
                foreach ($node->getCells() as $ele)
                {
                    $return .= $this->getTableNode($ele);
                }
            }
            //处理列
            else if ($node instanceof \PhpOffice\PhpWord\Element\Cell) {
                foreach ($node->getElements() as $ele)
                {
                    $return .= $this->getTextNode($ele);
                }
            }
            return $return;
        }
         
        /**
         * 处理word文档中base64格式图片
         * @param $node
         * @return string
         */
        public function pic2text($node)
        {
            //获取图片编码
            $imageData = $node->getImageStringData(true);
            //添加图片html显示标头
            $imageData = 'data:' . $node->getImageType() . ';base64,' . $imageData;
            $return = '<img src="'.$imageData.'">';
            return $return;
        }
        
        
        //++++-----795新增代码END-------------+++++++
        

标签:node,docx,return,Element,PhpWord,PhpOffice,ele,Word,PHP
From: https://www.cnblogs.com/79524795-Tian/p/17719746.html

相关文章

  • 转jacob操作word和excel
    jacob简介参考资料:jacob的官方文档:http://danadler.com/jacob/微软的javasdk文档:http://f2.grp.yahoofs.com/v1/IIwuQ7rQyGCn-b-f4biL9n_xAwI_Oh3ieuWVDkLfPpaKBmRUjeUzAtCy5oljSMgzdV6OZMRRgrEwU1_RtIXS-h0h7O9W4RB7aUs48A/sdkdocs.zip.aahttp://f1.grp.yahoofs.com/v1/IIwuQzpwMr......
  • PHP 导出 Excel 报错: Formula Error: An unexpected error occurred
    1.问题描述一个项目中用到了需要将用户手机号导出到Excel,最初写完测试是正常的,如下图所示 在后来的某一天,导出手机号突然出现了报错,如下图所示 通过提示我们将问题定位在了B列4867行。这是因为在excel中,单元格中的值如果是以“=”开头,则说明这个单元格是根据其......
  • php对接微信公众号扫码登录
     前言微信公众号扫码登录在安全性、用户体验和数据收集方面优势明显,是目前许多应用程序采用的登录方式之一。无需记住账号密码:用户无需输入和记住账号和密码,只需使用微信扫描二维码即可快速登录。安全性高:微信采用OAuth2.0协议,将用户信息传递给第三方应用程序,而不......
  • PHP关注公众号后网站自动注册并登录的实现
    需求描述在自己网站上点击微信登录,网站自己弹出一个二维码、扫描二维码后弹出公众号的关注界面、只要一关注公众号网站自动登录、第二次扫描登录的时候网站直接登录。大家可以体验一下 「随便找的一个网站」前期准备一个公众号(必须认证,配置服务器)微信开发文档实现原理公众平台......
  • PHP微信扫码登录
    微信扫码登录总体说明:先获取token和ticket,通过微信生成二维码接口生成二维码,把二维码信息添加到数据表中,用户扫码时检测二维码扫描状态,扫描成功后更新二维码状态,跳转页面。 微信开放文档一、数据表qrcord表,用户存储二维码信息,每生成一个二维码生成一条记录,通过openid字段判断......
  • php通过curl获取数据
    <?phpheader("Content-Type:text/html;charset=UTF-8");$url='https://www.baidu.com';print_r(curlContent($url));functioncurlContent($url,$method='get',$dataArr=array(),$headerArr=array()){$method=strtolower($......
  • PHP多层级菜单树形结构递归处理
    如题:一、数据库菜单数据表使用图片中id和parent_id两个参数来关联父子关系二、将数据库中的数据变成树状多层级解构```{ "id":1, "parentId":0, "treePath":"0", "name":"系统管理", "type":2, "path":"/system",......
  • 【漏洞复现】深信服 SG上网优化管理系统 catjs.php 任意文件读取漏洞
    1、简介2、漏洞描述深信服SG上网优化管理系统catjs.php存在任意文件读取漏洞,攻击者通过漏洞可以获取服务器上的敏感文件3、受影响版本深信服SG上网优化管理系统4、FOFA语句title==“SANGFOR上网优化管理”5、漏洞复现POCPOST/php/catjs.phpHTTP/1.1Host:User-A......
  • php实现大文件断点续传下载实例
    php实现大文件断点续传下载实例,看完你就知道超过100M以上的大文件如何断点传输了,这个功能还是比较经典实用的,毕竟大文件上传功能经常用得到。1require_once('download.class.php');2date_default_timezone_set('Asia/Shanghai');3error_reporting(E_STRICT);4......
  • phpstudy无法启动mysql(启动之后立马关闭)
    好久没有打开本地环境,直到昨天打开phpstudy,正常启动,但是在任务管理器中发现没有mysql服务于是在mysql的bin目录下执行.\mysqld.exe--install  mysql服务是有了,但这个问题就来了重启phpstudy无法启动mysql注意:在此之前注意备份mysql数据,查看现在设置的mysql密码,以便本地项......