使用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 相关文章推荐
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
php字符串截取的简单方法
Jul 04 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
php单链表实现代码分享
Jul 04 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 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
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
PHP最常用的正则表达式
2017/02/13 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
摘自启点的main.js
2008/04/20 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
javascript关于继承解析
2016/05/10 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
angular6的table组件开发的实现示例
2018/12/26 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
python绘制多个子图的实例
2019/07/07 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
PHP面试题-$message和$$message的区别
2015/12/08 面试题
C语言笔试题回忆
2015/04/02 面试题
生物技术毕业生自荐信
2013/10/23 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2015年维修工作总结
2015/04/25 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
导游词之海南天涯海角
2019/12/05 职场文书