使用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 相关文章推荐
PHP下打开URL地址的几种方法小结
May 16 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
PHP中文编码小技巧
Dec 25 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
PHP 加密解密内部算法
2010/04/22 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
Javascript 中介者模式实例
2009/12/16 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
javascript常用函数(2)
2015/11/05 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
浅析Python中字符串的intern机制
2020/10/03 Python
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
大学自我鉴定范文
2013/12/26 职场文书
黄金酒广告词
2014/03/21 职场文书
作文评语大全
2014/04/23 职场文书
作风建设演讲稿
2014/05/23 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
三八节祝酒词
2015/08/11 职场文书
vue实现简易音乐播放器
2022/08/14 Vue.js
TS 类型收窄教程示例详解
2022/09/23 Javascript