首页 > 编程语言 >PHP读取word文档

PHP读取word文档

时间:2023-12-21 21:11:51浏览次数:37  
标签:word filePath text element 文档 file PhpWord PHP getElements

1.安装

1.1composer安装phpoffice/phpword

composer require phpoffice/phpword

1.2 后台代码

  	 $file = $this->request->request('file');
            if (!$file) {
                $this->error(__('Parameter %s can not be empty', 'file'));
            }

            $filePath = ROOT_PATH . DS . 'public' . DS . $file;
            if (!is_file($filePath)) {
                $this->error(__('No results were found'));
            }

            //实例化reader
            $ext = pathinfo($filePath, PATHINFO_EXTENSION);
            if (!in_array($ext, ['csv', 'xls', 'xlsx','docx'])) {
                $this->error(__('Unknown data format'));
            }
            //下发为docx文档的处理
            // 替换双斜杠为单斜杠
            $filePath = str_replace('//', '/', $filePath);
			
			
			  $list = $this->tianhao($filePath);
			  
			  
			  

1.3把文档做成数组

         
        public function tianhao($cleanedFilePath)
        { 
      
   try {
    // 尝试加载 DOCX 文件
    $phpWord = IOFactory::load($cleanedFilePath);

    // 初始化汇总数组
    $documentContent = [];

    // 使用 for 循环遍历文档的段落和表格
    $sectionCount = count($phpWord->getSections());
    for ($i = 0; $i < $sectionCount; $i++) {
        $section = $phpWord->getSections()[$i];

        $elementCount = count($section->getElements());
        for ($j = 0; $j < $elementCount; $j++) {
            $element = $section->getElements()[$j];

            // 处理文本元素
            if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) {
                $text = '';
                $textElementCount = count($element->getElements());
                for ($k = 0; $k < $textElementCount; $k++) {
                    // 检查元素类型,只有是 Text 类型的时候才获取文本
                    if ($element->getElements()[$k] instanceof \PhpOffice\PhpWord\Element\Text) {
                        $text .= $element->getElements()[$k]->getText();
                    }
                    // 处理 Image 类型的图片
                    elseif ($element->getElements()[$k] instanceof \PhpOffice\PhpWord\Element\Image) {
                        $binaryImageData = $element->getElements()[$k]->getImageString();
                        $base64ImageData = base64_encode($binaryImageData);
                        //---
                  
                        // // 生成唯一的文件名
                        $filename = uniqid() . '.png';
                    
                        // // 指定保存路径
                        $uploadPath = '/www/wwwroot/tk.79524795.vip/public/wordimg/' . $filename;

                        // // 将 base64 数据解码并保存为文件
                        file_put_contents($uploadPath, base64_decode($base64ImageData));
                        // // 返回图片的地址
                        $imageUrl = 'http://tk.79524795.vip/wordimg/' . $filename;
                        // echo $imageUrl;
                        //---
                        $text .= $imageUrl;
                        // $text .= $base64ImageData;
                    }
                }
                $documentContent[] = $text;
            }
            // 处理表格元素
            elseif ($element instanceof \PhpOffice\PhpWord\Element\Table) {
                
                foreach ($element->getRows() as $ele)
                {
                    $return[] = $this->getTableNode($ele);
                }
                 $documentContent[] = $return;
            }
        }
    }

return $documentContent;
    // 输出汇总数组
    // var_dump($documentContent);
    // die;
} catch (\PhpOffice\PhpWord\Exception\Exception $e) {
    // 捕获异常并输出错误信息
    die('Error loading DOCX file: ' . $e->getMessage());
}

        }
         
         
         
         

标签:word,filePath,text,element,文档,file,PhpWord,PHP,getElements
From: https://www.cnblogs.com/79524795-Tian/p/17920123.html

相关文章

  • php 在laravel中集成grpc
    在laravel中集成使用grpc一、安装:1、macOSphp扩展:peclinstallgrpc,peclinstallprotobufprotocbuf:brewinstallprotobufetcd:brewinstalletcd2、ubuntu:php扩展:peclinstallgrpc(如果遇到[Makefile:1038:src/core/lib/comp......
  • 7、手签名放在文档里面—word
    1、在纸上写名字,然后拍照2、把图片插入word里面,右键【环绕文字】—>【浮于文字上方】3、用裁剪工具,把图片裁小点4、【设置图片格式】的参数就可以了 缺点:因为还是图片,所有它会覆盖文字的这个是没设置前的图片 ......
  • 企业选择防泄密软件/文档加密软件注意事项
    防泄密软件选择的一般准则:功能和特性:选择软件时,确保它提供了您所需的核心功能,如数据加密、访问控制、监控和审计功能等。易用性:软件应该易于使用,以便员工能够轻松适应并正确使用。强大的安全性不应妨碍用户的正常工作。支持的平台和集成:确保软件能够与您公司已有......
  • [转]CryptoJS-中文文档
    原文地址:CryptoJS-中文文档-掘金原始文档:code.google.com/archive/p/c…介绍CryptoJS是一个JavaScript的加解密的工具包。它支持多种算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160的哈希散列,以及进行AES、DES、Rabbit、RC4、TripleDES加解密。散列算法MD5MD5是一种广泛使......
  • wp-config.php的配置文件
    <?php/***ThebaseconfigurationforWordPress**Thewp-config.phpcreationscriptusesthisfileduringthe*installation.Youdon'thavetousethewebsite,youcan*copythisfileto"wp-config.php"andfillinthevalues.**......
  • Windows phpstudy vscode Xdebug调试无效,无法监听,没有什么效果
    Windows phpstudy vscodeXdebug调试无效,无法监听,没有什么效果vscode正常,能启动,能标记,就是无法监听打印phpinfo(); Xdebug版本3打印的信息输入这里,找出对应PHPXdebug的dll文件Xdebug:Support—TailoredInstallationInstructions会出给检查结果,下面是我的再看看VSCODE插......
  • 文档防泄密的基本功能有哪些?
    随着信息技术的发展,文档防泄密已经成为企业信息安全管理的重要组成部分。文档防泄密不仅能保护企业的核心竞争力,也能维护企业的品牌形象和公众信任。那么,文档防泄密的基本功能有哪些呢?本文将从以下几个方面进行阐述。 一、加密功能加密是文档防泄密的重要手段之一。通过对文档......
  • PHP本地进行API接口测试的实例
    最近写API接口,每写一个接口,我自己需要先测试一下,看有没有语法错误,请求的数据对不对,但是很多都是POST请求,没法直接在浏览器中打开链接进行测试,所以必须要有个可以在本地发HTTP请求的模拟工具,模拟一下数据请求。一开始我是这么干的,在本机wampserver运行目录下创建一个文件,在里边写Cu......
  • Python编写接口测试文档(以豆瓣搜索为例)
    前言很多人会使用postman工具,或者熟悉python,但不一定会使用python来编写测试用例脚本,postman里面可以完整的将python代码复制出来。(以下所有内容以豆瓣网站搜索功能为例子)一、postman接口用例转换为python测试用例打开postman,点击右侧的</>图标,页面右边会显示脚本,顶部修改导出的语......
  • 1、组织架构图—word
    1、在word里面录入所有的文字2、选中一级的文字,按【Tab】键,降级3、选中二级文字,按【Tab】键,降级4、选中三级文字,按【Tab】键,降级    5、将【布局】—>【纸张方向】—>【横向】,然后【Ctrl+A】全选文字,最后【Ctrl+x】剪切文字,点击【插入】—>【smartart】—>【层次结构......