thinkphp5.0集成phpword,生成word文档并下载

**

目录

**
安装
使用

安装

github下载地址:https://github.com/PHPOffice/PHPWord

也可直接使用composer安装,

composer require phpoffice/phpword

使用

你需要的controller用命名空间的方式引入

use PhpOffice\PhpWord\IOFactory; 
use PhpOffice\PhpWord\PhpWord;

在controller中新建方法,写入下方代码

$PHPWord = new PhpWord();
        // New portrait section
        $section = $PHPWord->createSection();
        $arr['project_name'] = '云桥';
        $arr['buy_start_time'] = '20180515';
        $arr['buy_end_time'] = '20190825';
        $arr['start_s'] = '20190825';
        $arr['end_s'] = '20190825';
        $arr['total'] = 25;
        $arr['tfee'] = 2500;
        // Add text elements
        $str = "        ".$arr['project_name']."项目,与腾讯房产于".$arr['buy_start_time']."至".$arr['buy_end_time']."开展腾讯电商团购合作,".$arr['start_s']."至".$arr['end_s']."内,共计售出房屋". $arr['total']."套,成交明细见附件,收取服务费合计".$arr['tfee']."元,特此证明。";
        $str5 = "        本确认函中的房源均已通过网签为确认标准,经双方授权代表签字后生效作为收款确认依据。且一旦签字盖章,乙方将不再承担该房源后续的电商团购费的退款责任。";
        $str1 = "甲    方:                                                           乙    方:";
        $str2 = "授权代表签字:                                                 授权代表签字:";
        $str3 = "盖章:                                                                  盖章:";
        
        $str4 = "签约时间:20        年        月        日                                    签约时间:20         年        月        日";
        $title = '<h1>腾讯电商合作成交签约确认函</h1>';
        $section->addText($title,'rStyle','pStyle');
        $section->addTextBreak(2);
        $section->addText($str,'cOntent');
        $section->addTextBreak(2);
        $section->addText($str5,'cOntent');
        $section->addTextBreak(2);
        // $section->addText(iconv('utf-8','GB2312//IGNORE',$str1),'cOntent');
        // $section->addText(iconv('utf-8','GB2312//IGNORE',$str2),'cOntent');
        // $section->addText(iconv('utf-8','GB2312//IGNORE',$str3),'cOntent');
        // $section->addText(iconv('utf-8','GB2312//IGNORE',$str4),'cOntent');
        $section->addText($str1,'cOntent');
        $section->addText($str2,'cOntent');
        $section->addText($str3,'cOntent');
        $section->addText($str4,'cOntent');
        $section->addTextBreak(2);
//        $section->addText('I am inline styled.', array('name'=>'Verdana', 'color'=>'006699'));
        $section->addTextBreak(2);
        $PHPWord->addFontStyle('cOntent', array('bold'=>false, 'size'=>12));
        $PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>false, 'size'=>16,'align'=>'center'));
        $PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
//        $section->addText('I am styled by two style definitions.', 'rStyle', 'pStyle');
//        $section->addText('I have only a paragraph style definition.', null, 'pStyle');
//         Save File
        $objWriter = IOFactory::createWriter($PHPWord, 'Word2007');
        /*header("Content-Type: application/doc");
        header("Content-Disposition: attachment; filename=".date("YmdHis").".doc");*/
        $path = 'wordfile/'.date("YmdHis").'.doc';
        $objWriter->save($path);
        $file1 = fopen($path, "r");
        // 输入文件标签
        Header("Content-type: application/octet-stream");
        Header("Accept-Ranges: bytes");
        Header("Accept-Length:".filesize($path));
        Header("Content-Disposition: attachment;filename=" . date("YmdHis").'.doc');
        ob_clean();     // 重点!!!
        flush();        // 重点!!!!可以清除文件中多余的路径名以及解决乱码的问题:
        //输出文件内容
        //读取文件内容并直接输出到浏览器
        echo fread($file1, filesize($path));
        fclose($file1);
        exit();

热门文章

暂无图片
编程学习 ·

IM即时通讯哇呼--解析

哇呼“Chat”是一款包含android客户端/ios客户端/pc客户端/WEB客户端的即时通讯系统。是由闪电云自主研发,服务器端源码直接部署在客户主机。非任何第三方IM通讯平台! 为各行业门户网站和企事业单位提供“一站式”定制解决方案,打造一个稳定,安全,高效,可扩展的即时通信系…
暂无图片
编程学习 ·

select 进阶查询,不会你就 OUT 了

1.1 分组查询 1.1.1 语法 # where 和 having 可以省略 SELECT col_name, group_function, FROM tb_name [WHERE where_condition] GROUP BY group_expression [HAVING group_condition];☞ 说明col_name:列明 tb_name:表名 where_condition:where 后的过滤条件 group_func…
暂无图片
编程学习 ·

PAT 甲级 1013 Battle Over Cities (25分)

题目 1013 Battle Over Cities (25分) It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we need to repair any othe…
暂无图片
编程学习 ·

一些个人感觉很不错的特效

html5 canvas绘制3D森林场景拖动特效https://www.mk2048.com/demo/demo_target_desc_h0ccka0cib.html基于canvas 卡通风格的3D森林场景拖动旋转展示特效。video.js在线视频播放器插件点击》video.js在线视频播放器插件html5 video.js mp4视频播放器插件支持点击全屏、播放 spac…
暂无图片
编程学习 ·

硬核!想要了解MyBatis执行器的小伙伴必看!

深入理解MyBatis执行器的设计理念 文章目录深入理解MyBatis执行器的设计理念JDBC中的statement类型关于Statement简单执行器和PreparedStatement预处理执行器MyBatis的执行过程是怎样的?SqlSessionExecutorExecutor的种类 JDBC中的statement类型Statement(简单执行器) 作用:…
暂无图片
编程学习 ·

mysql(一)认知了解

文章目录mysql(一)数据库(database)什么是mysql系统特性应用场景 mysql(一) 官网 中文的 数据库(database)数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是以一定方式储…
暂无图片
编程学习 ·

支付宝支付回调,回调日志记录

1、支付报支付回调方法public function aliPayNotify(){try {$app = PayService::alipay();$collect = $app->verify();$collectData = $collect->all();//获取支付宝回调参数$this->writeAliPayLog($collectData, true);if ($collectData[trade_…
暂无图片
编程学习 ·

梯度直方图和灰度共生矩阵

下面这三篇文章写的不错:https://blog.csdn.net/guanyuqiu/article/details/53117507https://blog.csdn.net/qq_32892383/article/details/79768684https://blog.csdn.net/qq_32892383/article/details/79779513
暂无图片
编程学习 ·

java之父詹姆斯高斯林的传奇人生

Java之父詹姆斯高斯林的传奇故事 詹姆斯高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为“Java之父”。 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学…
暂无图片
编程学习 ·

清华大学计算机研究生机试真题 问题 A: 输出梯形

问题 A: 输出梯形题目描述输入一个高度h,输出一个高为h,上底边为h的梯形。输入一个整数h(1<=h<=1000)。输出h所对应的梯形。样例输入5样例输出******************************** *************C++实现一开始只尝试读取一个h,出现WRONGANSWER50,后来用while进行循环读…
暂无图片
编程学习 ·

Leetcode刷题链表预备知识(C)

Leetcode里的head指针指向实实在在的链表第一个结点,该结点不是哨兵结点。 对链表处理完之后,链表成为空链表,则head指针赋值NULL。 写代码的时候,不要写出p->next->next这种东西,因为如果p->next==NULL,那程序运行就报错了。 用指针的时候,一定要判其是否为NU…
暂无图片
编程学习 ·

机器学习 | 优秀Tensorflow开源项目汇总(上)

1、Open_model_zoo预先训练的深度学习模型和样本(高质量且快速)https://github.com/opencv/open_model_zoo2、Deep Learning In Productionhttps://github.com/ahkarami/Deep-Learning-in-Production3、AndroidtensorflowmachinelearningexampleAndroid TensorFlow机器学习示…
暂无图片
编程学习 ·

sftp 突然登入不上去

stfp 突然登入不上去,没有重启,没有改配置,突然报错错误: FATAL ERROR: Received unexpected end-of-file from SFTP server 错误: 无法连接到服务器 状态: 正在等待重试...第一种可能:密码过期了,修改密码,验证这个问题,只需要在服务器上 su (sftp用户名) 例…
暂无图片
编程学习 ·

bootAnimation有卡顿

因为我是Mac操作的文件,里面包含了隐藏文件 .DS_Store 文件 需要把 .DS_Store 删除 解决方案1.删除所有隐藏.DS_store文件,打开命令行窗口sudo find / -name ".DS_Store" -depth -exec rm {} \; 2.设置不再产生选项, 执行如下命令defaults write com.apple.desktop…
暂无图片
编程学习 ·

ES6基本知识

Es6知识点ES5 变量 var 声明 1.可以重复声明 不报错 var a=12; var a=5; alert(a) //52.无法限制修改 PI(圆周率)可以修改PI3.没有块级作用域(语法块) {变量=123 } for(...){var a=12 } alert(a) 12ES6语法 let const 不能重复声明 let 是变量 let a=12; a=5 alert(a) 5c…
暂无图片
编程学习 ·

Unity通过代码实现预制体Apply保存

if (PrefabUtility.GetPrefabParent(weaponPanel.gameObject) != null) {PrefabUtility.ReplacePrefab(weaponPanel.gameObject,PrefabUtility.GetPrefabParent(weaponPanel), ReplacePrefabOptions.ConnectToPrefab); }
暂无图片
编程学习 ·

vue框架:变更页面background背景颜色 - 代码篇

vue框架:变更body,html页面background背景颜色场景bug介绍: vue页面切换,导致后面的页面背景颜色被上一个页面背景色覆盖,如何避免这个问题。 Method 1. 修改 style为 style scoped Method 2. 按下面的设置教程执行。1. 修改 样式:渲染前 执行 beforeCreate () {documen…
暂无图片
编程学习 ·

创建型——工厂系列(Factory)day04

任何可以产生对象的方法或类,都可以称为工厂 单例也是一种工厂 为什么有了new以后,还要有工厂? 1、灵活控制生产过程 2、权限、修饰、日志……接口模式package cn.xhl.interfacemodel;public interface IFruit {public void plant();public void harvest();public void grow…
暂无图片
编程学习 ·

父子项目构建 & module间类调用

IDEA创建父子项目1.springBoot父子项目https://www.cnblogs.com/MaxElephant/p/8205234.html2.Maven or 普通项目 父子项目https://blog.csdn.net/u014307520/article/details/80692702IDEAmodule之间 类 相互调用https://blog.csdn.net/yhblog/article/details/83793602