php 使用 phpword 操作 word 读取 word
思路
1. 加载word文件。
2. 循环判断加载出来的数据。
( 数据下面有很多个节点 )
( 节点是按照数据的类型分类的 例如 无样式的文本是RunText,换行是TextBreak,表格是table.....等)
3. 循环判断他们的数据类型是什么进行读取。
4. 如果是文本的话就使用 节点->getText() 就直接可以获取到文本内容 表格的话有点麻烦。
关于操作word的一些东西
https://segmentfault.com/a/1190000019479817?utm_source=tag-newesthttps://www.cnblogs.com/mengluo/p/10280381.html(本博源于这个博客)
代码
// 准备条件 下载 phpword 的拓展库 // 加载
$source = IOFactory::load($filePath)->getSections(); foreach ($source as $S)
{
$elements = $S->getElements();
if (!empty($this->GetElement($elements)))
{
$arr = $this->GetElement($elements);
$this->todoGo($arr,$tableCatId,$tableStageId,$filePath,$versionId);
}
} // 逐级读取/读取节点
function GetElement($elements)
{
$arrx=[];
foreach ($elements as $k=>$e1)
{
// 获取word对象中对应内容类型类的节点的类名
$class = $this->getClass($e1);
if ($class=='Table')
{
// 获取最大行
$rows=count($e1->getRows()); // 获取最大列
$cells=$e1->countColumns(); $arrx[$k]['rows']=$rows;
$arrx[$k]['cells']=$cells; // 循环获取对应行和列下的单元格的文本内容
for($i=0;$i<$rows;$i++)
{
// 获取对应行
$rows_a=$e1->getRows()[$i];
for($j = 0; $j < $cells; $j++)
{
// 获取对应列
$x=$rows_a->getCells()[$j];
$arrx[$k]['text'][$i+1][$j+1]=$this->getTextElement($x);
}
}
}
}
} //获取文本的节点
function getTextElement($E)
{
$elements = $E->getElements();
$xas='';
$result = [];
$inResult=[];
$text=[]; foreach($elements as $inE)
{
$ns = get_class($inE);
$elName = explode('\\', $ns)[3]; if($elName == 'Text')
{
$result[] = $this->textarr($inE);
}
elseif (method_exists($inE, 'getElements'))
{
$inResult = $this->getTextElement($inE);
} if(!is_null($inResult))
{
$result = array_merge($result, $inResult);
}
}
return count($result) > 0 ? $result : null;
} //获取文本
function textarr($e)
{
$textArr['text']=$e->getText();
return $textArr;
}
php 使用 phpword 操作 word 读取 word的更多相关文章
- aspose.word 读取word段落内容
注:转载请标明文章原始出处及作者信息 aspose.word 插件下载 链接: http://pan.baidu.com/s/1qXIgOXY 密码: wsj2 使用原因:无需安装office,无兼容 ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到
C# PDF Page操作——设置页面切换按钮 概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者 ...
- POI 读取word (word 2003 和 word 2007) (转)
最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 9 ...
- php 读取 word
---恢复内容开始--- 首先安装com扩展: php.ini php.ini 确保有此语句 [PHP_COM_DOTNET] extension=php_com_dotnet.dll php.i ...
- php 如何写入、读取word,excel文档
如何在php写入.读取word文档 <? //如何在php写入.读取word文档 // 建立一个指向新COM组件的索引 $word = new COM("word.applicatio ...
- Java读取word中表格
因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...
- [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)
出处 C#实现在Sql Server中存储和读取Word文件 要实现在Sql Server中实现将文件读写Word文件,需要在要存取的表中添加Image类型的列,示例表结构为: CREATE TABL ...
- 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)
POI 与 Microsoft Office 1. POI 简介 POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 Microsoft Office 办公套 ...
随机推荐
- matlab中floor 朝负无穷大四舍五入
来源:https://ww2.mathworks.cn/help/matlab/ref/floor.html?searchHighlight=floor&s_tid=doc_srchtitle ...
- Allegro PCB 转 PADS Layout
操作系统:Windows 10 x64 工具1:Allegro PCB Design XL (legacy) version 16.6-2015 工具2:PADS Layout VX.2.3 参考1: ...
- Redis使用RDB持久化和AOF持久化的区别 - 小白之所见
- 设置 eclipse C++ 版本
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 默认是使用 C++ 98 版本进行编译 设置 eclipse 中 C++ 的版本: Project -& ...
- linux CentOS7 防火墙操作
1, 查看防火墙状态: firewall-cmd --state systemctl status firewalld.service 2, 开启防火墙: systemctl start firewa ...
- linux centos 05
centos7安装mariadb 1.yum 得配置yum源,配置阿里云的 两个 yum源 ,阿里云的yum源中,会有 mariadb的软件包 阿里云的yum仓库中,mariadb版本如下 mar ...
- 【转载】opencvVS2019配置方法
环境: 系统:win10系统截至2020920版本 opencv版本:3.0.0版本 IDE:宇宙最强IDEA最新版本2019社区版 教程: 1.下载opencv安装包官网下载链接:https://o ...
- php 数组与URL相互转换
php为了数组与url参数相互转换提供了两个函数: 1,数组转换为带&的URL的字符串 例如: $arr =['title'=>'我是小白','name'=>'真的很白','tex ...
- centos8平台:用fontconfig安装及管理字体(fc-list/fc-match/fc-cache)
一,fc-list所属的rpm包 [root@blog ~]$ whereis fc-list fc-list: /usr/bin/fc-list /usr/share/man/man1/fc-lis ...
- 第三十二章 Linux常规练习题(一)
一.练习题一 1.超级用户(管理员用户)提示符是____,普通用户提示符是____.2.linux关机重启的命令有哪些 ?3.bash是什么?4.bash特性, 常见的bash特性有哪些?5.网卡的配 ...