使用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读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
php返回json数据函数实例
Oct 09 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
Dec 02 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
详解no input file specified 三种解决方法
Nov 29 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JS启动应用程序的一个简单例子
2008/05/11 Javascript
javascript 尚未实现错误解决办法
2008/11/27 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
微信小程序实现图片压缩功能
2018/01/26 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
现金出纳岗位职责
2014/03/15 职场文书
安全标语口号
2014/06/09 职场文书
空气的环保标语
2014/06/12 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python