使用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 之 没有mysql支持时的替代方案
Oct 09 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php的hash算法介绍
Feb 13 PHP
php实现的通用图片处理类
Mar 24 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP实现用户登录的案例代码
May 10 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
PHP 8新特性简介
Aug 18 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
mysql 字段类型说明
2007/04/27 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
PHP通用检测函数集合
2011/02/08 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
解决laravel session失效的问题
2019/10/14 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
JS高级笔记
2011/07/13 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
python测试驱动开发实例
2014/10/08 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
区优秀教师事迹材料
2014/02/10 职场文书
个人工作表现评语
2014/04/30 职场文书
啤酒节策划方案
2014/05/28 职场文书
企业口号大全
2014/06/12 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
电影建国大业观后感
2015/06/01 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL