使用PHPWord生成word文档的方法详解


Posted in PHP onJune 06, 2019

本文实例讲述了使用PHPWord生成word文档的方法。分享给大家供大家参考,具体如下:

有时我们需要把网页内容保存为Word文档格式,以供其他人员查看和编辑。PHPWord是一个用纯PHP编写的库,使用PHPWord可以轻松处理word文档内容,生成你想要的word文档。

安装

我们使用Composer 来安装PHPWord。

composer require phpoffice/phpword

如何使用

自动加载

安装好phpword后,新建一个php文档,引入autoload.php。

require 'vendor/autoload.php';

实例化

实例化并新增一个空白页。

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();

添加文字内容

向空白页添加文字内容,可以设置文字的样式,包括字体、颜色、字号、粗体等等。

$fontStyle = [
  'name' => 'Microsoft Yahei UI',
  'size' => 20,
  'color' => '#ff6600',
  'bold' => true
];
$textrun = $section->addTextRun();
$textrun->addText('你好,这是生成的Word文档。 ', $fontStyle);

链接

可以为Word文档中的文字添加用于点击跳转的链接。

$section->addLink('https://www.helloweba.net', '欢迎访问Helloweba', array('color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE));
$section->addTextBreak();

图片

可以在word中添加图片,如图片地址logo.png,尺寸为64x64。图片源也可以是远程图片。

$section->addImage('logo.png', array('width'=>64, 'height'=>64));

页眉

为Word文档添加页眉。

$header = $section->addHeader();
$header->addText('Subsequent pages in Section 1 will Have this!');

页脚

为word文档添加页脚,页脚内容是页码,格式居中。

$footer = $section->addFooter();
$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.', null, array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));

增加一页

继续增加一页,加入内容。

$section = $phpWord->addSection();
$section->addText('新的一页.');

表格

增加一个基础表格,可以设置表格的样式。

$header = array('size' => 16, 'bold' => true);
$rows = 10;
$cols = 5;
$section->addText('Basic table', $header);
$table = $section->addTable();
for ($r = 1; $r <= 8; $r++) {
  $table->addRow();
  for ($c = 1; $c <= 5; $c++) {
    $table->addCell(1750)->addText("Row {$r}, Cell {$c}");
  }
}

生成Word文档

如果你想生成word文档放在服务器上,可以使用:

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('hellwoeba.docx');

下载Word文档

如果你想直接下载Word文档,不在服务器上保存的话,可以使用:

$file = 'test.docx';
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $file . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$xmlWriter->save("php://output");

上述代码会强制浏览器下载为word文档。

更多有关PHPWord的内容,请参考PHPWord文档:http://phpword.readthedocs.org/.

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
thinkphp配置连接数据库技巧
Dec 02 PHP
PHP实现事件机制实例分析
Jun 26 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
thinkPHP分页功能实例详解
May 05 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
浅谈php://filter的妙用
Mar 05 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 #PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 #PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 #PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 #PHP
PHP token验证生成原理实例分析
Jun 05 #PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 #PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 #PHP
You might like
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php 函数使用方法与函数定义方法
2010/05/09 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
PyQt5实现拖放功能
2018/04/25 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python lxml中etree的简单应用
2019/05/10 Python
pandas 空数据处理方法详解
2019/11/02 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
工程造价专业大专生求职信
2013/10/06 职场文书
会计专业应届生求职信
2013/11/24 职场文书
劳动之星获奖感言
2014/02/01 职场文书
高中生操行评语大全
2014/04/25 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
Python实现科学占卜 让视频自动打码
2022/04/09 Python