思路 

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的更多相关文章

  1. aspose.word 读取word段落内容

    注:转载请标明文章原始出处及作者信息 aspose.word 插件下载 链接: http://pan.baidu.com/s/1qXIgOXY 密码: wsj2 使用原因:无需安装office,无兼容 ...

  2. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  3. C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到

    C# PDF Page操作——设置页面切换按钮   概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者 ...

  4. POI 读取word (word 2003 和 word 2007) (转)

    最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 9 ...

  5. php 读取 word

    ---恢复内容开始--- 首先安装com扩展: php.ini php.ini 确保有此语句 [PHP_COM_DOTNET] extension=php_com_dotnet.dll   php.i ...

  6. php 如何写入、读取word,excel文档

    如何在php写入.读取word文档 <? //如何在php写入.读取word文档 // 建立一个指向新COM组件的索引 $word = new COM("word.applicatio ...

  7. Java读取word中表格

    因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...

  8. [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)

    出处 C#实现在Sql Server中存储和读取Word文件 要实现在Sql Server中实现将文件读写Word文件,需要在要存取的表中添加Image类型的列,示例表结构为: CREATE TABL ...

  9. 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)

    POI 与 Microsoft Office 1. POI 简介 POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 Microsoft Office 办公套 ...

随机推荐

  1. 5-kunernetes资源调度

    1.创建一个pod的工作流程 master节点组件 1.apiserver --> etcd 2.scheduler 3.controller-manager node节点有那些组件 1.kub ...

  2. docker-compose应用

    docker-compose应用 需求编写compose模板文件,实现同时启动tomcat.mysql.redis容器. 1.编写模板文件 #新建文件夹mkdir -p /tzh/compose_te ...

  3. 55.Qt-将界面程序封装成静态库

    1.生成dll 然后选择创建静态链接库: 创建的时候,记得勾选QtGui,并且修改pro文件,添加下面1句(这样就可以创建界面了): 修改staticlib.cpp: #include "s ...

  4. Cesium资料

    CesiumLab论坛:https://github.com/cesiumlab/cesium-lab-forum/issues简书上的Cesium实验室文集:https://www.jianshu. ...

  5. 使用Python学习win32库进行内存读写

    前言: 上一周,在52的精华帖中,看到有位大佬用Python制作了鬼泣5的修改器,看完才知道,原来Python也可以对内存进行操作,出于对技术的好奇,看完以后,决定自己也尝试一下. 要用到的工具: C ...

  6. MeteoInfoLab脚本示例:AIRS Swath HDF数据

    例子中的AIRS Swath HDF数据在Polar Stereographic(南极)投影中接近矩形,需要先从数据中读出经纬度及相关数据数组,利用surfacem函数绘制Swath数据(散点),在s ...

  7. day42 Pyhton 并发编程05

    一.内容回顾 # 线程 # 正常的编程界: # 进程 # 计算机中最小的资源分配单位 # 数据隔离 # 进程可以独立存在 # 创建与销毁 还有切换 都慢 给操作系统压力大 # 线程 # 计算机中能被C ...

  8. mysql 登陆与退出

    Mysql登陆与退出 登陆参数 登陆命令 mysql -uroot -p 回车输入密码 退出有三个命令:  exit  quit  \q 修改mysql提示符 连接mysql客户端时通过参数指定: 登 ...

  9. jmeter 相关

    Don't use GUI mode for load testing !, only for Test creation and Test debugging. For load testing, ...

  10. C语言必踩神坑,世上本没有坑,摔的人多了,也就有了坑!

    这是一个伤心的故事,有多少小伙伴在写C语言代码时遇到过的情景! 提问:C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关: 可能但不保证初始化为0: 未确定. 总之,全部都是些一本正 ...