最近手上的项目需要生成word文档并保存下来,网上搜索了一下找到了PHPword,记录一下,免得以后再用到又去百度一大堆。

项目使用的是thinkPHP5.1框架。

composer安装phpword扩展,cmd切换路径到项目根目录下输入

composer require phpoffice/phpword

安装完成后控制器中引入phpword

use PhpOffice\PhpWord\IOFactory;

use PhpOffice\PhpWord\PhpWord;

然后去创建一个word文档用作模板,尽量用office2007(.docx后缀)吧(PS:网上看到phpword对doc的支持不太友好,容易替换失败)。

把word文档的格式都设置好,然后在需要替换内容的地方添加替换标签,模板标签格式为${标签名}如图:

准备工作就绪,开始写代码

public function create_word(){

$phpWord = new PhpWord;

//打开模板

$template = $phpWord->loadTemplate('public/static/doc/template1.docx');

//模板替换

$template->setValue('name', '小明');

$template->setValue('sex', '男');

$template->setValue('phone_number', '18888888888');

$template->setValue('email', '18888888888@163.com');

$template->setValue('school', 'XXX大学');

$template->setValue('edu', '本科');

//输出换行到word文档用

$template->setValue('expertise', '1.PHP
2.mysql
3.linux');

$template->setValue('job', 'PHP工程师、全栈工程师、架构师');

//文件命名

$fileName = md5(rand(1000, 9999)).'.docx';

//文件保存路径

$filePath = 'public/static/create/'.$fileName;

//保存文件

$template->saveAs($filePath);

}

调用这个方法

保存为word文档

查看效果

至此,简单的模板替换就完成了,再加个下载

public function create_word(){

$phpWord = new PhpWord;

//打开模板

$template = $phpWord->loadTemplate('public/static/doc/template1.docx');

//模板替换

$template->setValue('name', '小明');

$template->setValue('sex', '男');

$template->setValue('phone_number', '18888888888');

$template->setValue('email', '18888888888@163.com');

$template->setValue('school', 'XXX大学');

$template->setValue('edu', '本科');

//输出换行到word文档用

$template->setValue('expertise', '1.PHP
2.mysql
3.linux');

$template->setValue('job', 'PHP工程师、全栈工程师、架构师');

//文件命名

$fileName = md5(rand(1000, 9999)).'.docx';

//文件保存路径

$filePath = 'public/static/create/'.$fileName;

//保存文件

$template->saveAs($filePath);

ob_clean();

if(!is_file($filePath) || !is_readable($filePath)) exit('未找到文件');

$fileHandle = fopen($filePath,"rb");

if($fileHandle === false) exit("文件读取失败");

header("Content-Transfer-Encoding: binary");

header("Accept-Ranges: bytes");

header("Content-Length: ".filesize($filePath));

header('Content-Disposition:attachment;fileName="'.urlencode($fileName).'"');

while(!feof($fileHandle)) {

echo fread($fileHandle, 10240);

}

fclose($fileHandle);

}

Dreanmwear能做php模板吗,PHPword模板的使用相关推荐

  1. phpword模板替换并导出

    PHPWord模板替换并导出 适用的场景是有word模板,需要替换掉里面的指定内容,并导出修改后的word文档. 1.准备word模板,word模板里面的变量应该以${param}的形式声明,需要替换 ...

  2. c++模板--2(模板机制,模板的局限性,类模板,类模板做函数的参数)

    函数模板机制结论 编译器并不是把函数模板处理成能狗处理任何类型的函数 函数模板通过具体类型产生不同的函数 编译器会对函数模板进行两次编译,在声明的地方对模板代码的本身进行编译,在调用的地方对参数替换后 ...

  3. project 模板_施工进度横道图不会做?18份计划模板收藏好,输入参数迅速成图...

    施工进度横道图不会做?18份计划模板收藏好,输入参数迅速成图 作为施工组织设计的关键内容,施工进度计划控制了工程施工进度.工程施工期限等各项施工活动.进度计划是否合理,直接影响施工速度.成本和质量.因 ...

  4. 如何使用思维导图做计划的6种模板类型

    有句话说"闲时无计划,忙时多费力",好的计划让你的思维清晰,能创造出事半功倍的效果,由此可见做计划对我们的重要性,而利用思维导图我们可以快速地做各种事情的规划,接下来我分享一些用思 ...

  5. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

  6. office2019 图目录_施工进度横道图不会做?18份计划模板收藏好,输入参数迅速成图...

    施工进度横道图不会做?18份计划模板收藏好,输入参数迅速成图 作为施工组织设计的关键内容,施工进度计划控制了工程施工进度.工程施工期限等各项施工活动.进度计划是否合理,直接影响施工速度.成本和质量.因 ...

  7. phpword 模板替换并导出教程

    phpword 模板替换并导出教程 word 模板文件定义 楼主在 public\uploads\application\template.docx 该路径下面创建了 word 的模板文件templa ...

  8. [C++再学习系列] 函数模板和类模板

    函数模板和类模板 C++ 提供类模板和函数模板.函数模板允许重载 ,而类模板不允许重载(类无重载概念).类模板可以进行全特化和偏特化,而函数模板仅能够全特化 .因此,写一个看似函数模板偏特化的函数模板 ...

  9. html模板引擎 字符串长度,Web前端模板引擎の字符串模板

    这是一个系列文章,将会介绍目前Web前端领域里用到的三种模板引擎技术,它们分别是: 基于字符串的模板 基于Dom操作的模板 基于虚拟Dom的模板 本文是这个系列的第一篇,着重介绍基于字符串的模板引擎的 ...

最新文章

  1. etcd代理组件的开发思想
  2. H5活动刮刮卡功能的实现与注意事项
  3. java 泛型int_Java 泛型
  4. 用Java刷OJ超时怎么办?原因分析及解决方式
  5. C++:构造函数和析构函数能否为虚函数
  6. mysql 垂直分表技术的实战演练,有实战代码。
  7. mac Desktop 在Terminal 无法访问,错误提示:ls: .: Operation not permitted
  8. java并发编程实战读书笔记3
  9. 鸿蒙官网首页,鸿蒙官网-鸿蒙手游官网首页最新版预约 v1.0-优盘手机站
  10. iOS开发中,实现本地推送
  11. 学术论文的word排版
  12. c语言无法定位程序输入点,【求助】无法定位程序输入点PacketGetVersion于动态链接库Packet.dll上...
  13. 二冲程发动机均值模型仿真
  14. 2022最新前端vue面试题
  15. “我爱淘”冲刺阶段Scrum站立会议8
  16. teamviewer linux centos,teamviewer Linux centos7安装使用详细
  17. oc项目中使用swift
  18. DLang、Rust 以及 Golang 对比数据库操作方式
  19. PVE系列教程(十五)、安装Windows10系统(专业版、企业版、家庭版通用)
  20. java计算机毕业设计基于Web的上门家教系统的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署

热门文章

  1. 还在傻傻分不清楚equal和==
  2. python field readonly_Python serializers.ReadOnlyField方法代码示例
  3. ARM 之六 Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
  4. Linux C : GDB调试命令汇总
  5. oracle表空间放在别的服务器,OracleXE的APEX可以访问同一服务器上的另一个Oracle数据库(10g),还是受限于XE数据库中的那些用户/表空间?...
  6. Ubuntu下安装依赖包问题总结
  7. 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
  8. 容器安全最佳实践入门
  9. linux系统根分区挂载出错 系统无法,用虚拟机安装linux时显示“没有定义根文件系统,请到分区菜单以修正此错误”,是什么意思,肿么弄谢谢各位...
  10. 系统升级页面html,页面访问界面升级