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中加汉明窗 ahmming 作用
转自:http://www.cnblogs.com/lxy2017/p/4049124.html 1.什么是汉明窗? 语音信号一般在10ms到30ms之间,我们可以把它看成是平稳的.为了处理语音信号, ...
- Java之微信支付(扫码支付模式二)案例实战
摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路. 一:微信支付接入准备工作: 首先, ...
- 为什么在M3架构中 PC总是返回加4
由于CPU是3级流水线的方式运行.在执行第一条指令时候,已经对第二条指令译码,对第三条指令取值. PC总是指向正在取值的指令.由于在M3架构中,采用Thumb-2指令,每个指令占据2个字节,所以PC总 ...
- Linux最常用的命令大全
Linux最常用的命令大全 按功能索引 目录处理命令 ls mkdir pwd cd rmdir cp mv rm 文件处理命令 touch cat tac more less head tail l ...
- day55 Pyhton 前端Jquery07
昨日回顾: 表单,点击submit提交以后,服务端受到信息 import socket import pymysql from urllib.parse import unquote def run( ...
- day29 Pyhton 面向对象 继承进阶
一.内容回顾 初识继承 父类\基类\超类 子类\派生类 派生 :派生方法.派生属性 单继承 继承的语法class子类名(父类名) 解决开发中代码冗余的问题 子类继承了父类之后,可以调用父类中的方法 如 ...
- vi/vim系统编辑命令使用技巧
01前言 在Linux系统中会有很多的文件信息,这些文件的内容如果需要编辑,就必须借助vi或vim编辑命令. vi是Linux命令行界面下的重要文字编辑器.vim是vi命令的增强版. [语法格式] v ...
- php进程 swoole
<?php $pid = posix_getpid(); $ppid = posix_getppid(); var_dump($pid); cli_set_process_title(" ...
- 【应用服务 App Service】发布到Azure上的应用显示时间不是本地时间的问题,修改应用服务的默认时区
问题情形 应用程序发布到App Service后,时间显示不是北京时间,默认情况为UTC时间,比中国时间晚 8 个小时. 详细日志 无 问题原因 Azure 上所有的服务时间都采用了 UTC 时间. ...
- C++ Win 32 使用原始套接字获取所有ip数据包并分析(包括ping包)
/*页面编码:GBK 开发环境 VS2019 */ #define _WINSOCK_DEPRECATED_NO_WARNINGS#include <iostream>#include&l ...