TP5 解决如何实现生成并导出Word文档功能

news/2025/3/14 21:37:48/

今天连续更新两篇文章,上一篇讲了一下如何生成PDF并导出文件的功能
接下来我们就来拼一拼怎么实现生成并导出word文档的功能
话不多说 我们直接上流程:
1.下载安装phpword插件:composer require phpoffice/phpword
2.安装成功后该插件在我们项目vendor会出现phpoffice文件夹,点进去看一下如果有phpword说明下载成功了。
在这里插入图片描述
3.我们在控制器(任意取名)并引入对应的类,我在控制器中创建了一个方法(使用模板替换),还有一种方法是直接用代码生成word
在这里插入图片描述先定义一个word文档。并保存到你的项目里。
下面是代码直接生成word

// testpublic function test(){$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 = './report/'.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();}

4.然后使用下载这个方法进行下载word
在这里插入图片描述
到此生成并导出word文档功能已成功实现。
以上代码亲测有效。可以正常使用, 记得关注收藏!


http://www.ppmy.cn/news/43258.html

相关文章

再探pytorch的Dataset和DataLoader

本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052本文从分类、检测、分割三大任务的角度来剖析pytorch得dataset和dataloader源码&#xff0c;可以让初学者深刻理解每个参数的由来和使用&#xff0c;并轻松自定义dataset。思考&#x…

day29—选择题

文章目录1.HashSet子类依靠什么方法区分重复元素&#xff08;C&#xff09;2.以下代码在编译和运行过程中会出现什么情况&#xff08;A&#xff09;3.有这么一段程序&#xff0c;执行的结果是&#xff08;C&#xff09;1.HashSet子类依靠什么方法区分重复元素&#xff08;C&…

雪花算法ID冲突问题与解决方案

分布式部署应用项目采用雪花算法生成ID有冲突问题&#xff1a; 方案一&#xff1a;给应用分配随机 datacenter-id和 worker-id 如下图&#xff1a; global-config:db-config:logic-delete-field: del_flaglogic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-…

Python 小型项目大全 41~45

四十一、幸运星 原文&#xff1a;http://inventwithpython.com/bigbookpython/project41.html 在这个碰运气游戏中&#xff0c;你掷骰子来收集星星。你掷得越多&#xff0c;你能得到的星星就越多&#xff0c;但是如果你得到三个头骨&#xff0c;你就失去了一切&#xff01;这款…

【并发编程】ConcurrentHashMap源码分析(一)

ConcurrentHashMap源码分析CHM的使用CHM的存储结构和实现CHM源码put源码分析initTable 初始化tabletreeifyBin()和tryPresize()transfer 扩容和数据迁移高低位的迁移ConcurrentHashMap是一个高性能的&#xff0c;线程安全的HashMapHashTable线程安全&#xff0c;直接在get,put方…

Minikube安装、运行

1.Minikube是什么 本地的k8s集群&#xff0c;方便开发者学习k8s。 2.安装的前提条件 2个CPU货以上。2G内存或以上。20G磁盘或以上。可以链接互联网。安装docker&#xff08;官网说或者一个虚拟环境&#xff0c;这个不考虑&#xff09;。 3.官网地址 minikube start | minik…

2016-2017 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2016)题解

2016-2017 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2016) A - Artwork 题目描述&#xff1a; 给定N*M的网格&#xff0c;给出Q次询问&#xff0c;每次询问都给出一个小矩阵&#xff0c;保证每个矩阵要么长为1&#xff0c;要么宽为1&#xff0c;将网格中矩阵部…

CANopen | 对象字典OD 06 - 创建对象字典变量,通过TPDO定时发送

文章目录一、前言二、实验目的三、对象字典OD四、TPDO1定时发送tx_Value变量一、前言 该笔记的程序: github 二、实验目的 CANopen从站有一个变量tx_Value&#xff0c;映射到TPDO1上。接着&#xff0c;CANopen从站每1S发送一次TPDO1&#xff0c;将tx_Value发送出去。 三、…