iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >记一次php 导出word文档
  • 443
分享到

记一次php 导出word文档

phpword开发语言 2023-09-03 05:09:10 443人浏览 安东尼
摘要

导出试卷  先看效果 $paper = Exam::where('id', $data['examid'])->field('paper_id,title')->find(); $bankIds = Paper

导出试卷  先看效果

  $paper = Exam::where('id', $data['examid'])->field('paper_id,title')->find();        $bankIds = PaperStorehouse::where('id', $paper['paper_id'])->value('banks');        $field = 'type,rate,name,options,parsing,value,question_id,parsing_id';        $bankInfo = Banks::where('id', 'in', $bankIds)->field($field)->select()            ->map(function ($item) {                if ($item['question_id'] == 0) {                    $item['question_id'] = '';                } else {                    $item['question_id'] = getDomain(File::where('id', $item['question_id'])->value('filepath'));                }                if ($item['parsing_id'] == 0) {                    $item['parsing_id'] = '';                } else {                    $item['parsing_id'] = getDomain(File::where('id', $item['parsing_id'])->value('filepath'));                }                $item['rate'] = taskdegreeName($item['rate']);                $item['typeTxt'] = bankTxt($item['type']);                $options = json_decode($item['options'], true);                $item['Aanswer'] = $options[0]['value'] ?: '';                $item['Banswer'] = $options[1]['value'] ?: '';                $item['Canswer'] = $options[2]['value'] ?: '';                $item['Danswer'] = $options[3]['value'] ?: '';                return $item;            });//        $singles  $multi  $judge  $operate  $filling  $read  $sub        $singles = [];        $multi = [];        $subjectivity = [];        $judge = [];        foreach ($bankInfo as $k => $v) {            if ($v['type'] == 1) {                $singles[] = $v;            } elseif ($v['type'] == 2) {                $multi[] = $v;            } elseif ($v['type'] == 3) {                $judge[] = $v;            } else {                $subjectivity[] = $v;            }        }        $path = public_path();        $tmp = new TemplateProcessor($path . 'word.docx');        $singlesNum = count($singles);        $multiNum = count($multi);        $judgeNum = count($judge);        $subjectivityNum = count($subjectivity);        $tmp->setValue('examTitle', $paper['title']);        $tmp->cloneRow('singles', $singlesNum);        $tmp->cloneRow('multi', $multiNum);        $tmp->cloneRow('judge', $judgeNum);        $tmp->cloneRow('subjectivity', $subjectivityNum);        for ($i = 0; $i < $singlesNum; $i++) {            $tmp->setValue("singles#" . ($i + 1), $singles[$i]['typeTxt']);            $tmp->setValue("singlesName#" . ($i + 1), $singles[$i]['name']);            $tmp->setValue("AAanswer#" . ($i + 1), $singles[$i]['Aanswer']);            $tmp->setValue("ABanswer#" . ($i + 1), $singles[$i]['Banswer']);            $tmp->setValue("ACanswer#" . ($i + 1), $singles[$i]['Canswer']);            $tmp->setValue("ADanswer#" . ($i + 1), $singles[$i]['Danswer']);        }        for ($i = 0; $i < $multiNum; $i++) {            $tmp->setValue("multi#" . ($i + 1), $multi[$i]['typeTxt']);            $tmp->setValue("multiName#" . ($i + 1), $multi[$i]['name']);            $tmp->setValue("MAanswer#" . ($i + 1), $multi[$i]['Aanswer']);            $tmp->setValue("MBanswer#" . ($i + 1), $multi[$i]['Banswer']);            $tmp->setValue("MCanswer#" . ($i + 1), $multi[$i]['Canswer']);            $tmp->setValue("MDanswer#" . ($i + 1), $multi[$i]['Danswer']);        }        for ($i = 0; $i < $judgeNum; $i++) {            $tmp->setValue("judge#" . ($i + 1), $judge[$i]['typeTxt']);            $tmp->setValue("judgeName#" . ($i + 1), $judge[$i]['name']);            $tmp->setValue("Eanswer#" . ($i + 1), $judge[$i]['Aanswer']);            $tmp->setValue("Fanswer#" . ($i + 1), $judge[$i]['Banswer']);        }        for ($i = 0; $i < $subjectivityNum; $i++) {            $tmp->setValue("subjectivity#" . ($i + 1), $subjectivity[$i]['typeTxt']);            $tmp->setValue("subjectivityName#" . ($i + 1), $subjectivity[$i]['name']);        }                $tmp->saveAs($path . 'target.docx');        //浏览器下载        ob_clean();        ob_start();        $fp = fopen($path . 'target.docx', "r");        $file_size = filesize($path . 'target.docx');        Header("Content-type:application/octet-stream");        Header("Accept-Ranges:bytes");        Header("Accept-Length:" . $file_size);        Header("Content-Disposition:attchment; filename=" . '测试文件.docx');        $buffer = 1024;        $file_count = 0;        while (!feof($fp) && $file_count < $file_size) {            $file_con = fread($fp, $buffer);            $file_count += $buffer;            echo $file_con;        }        fclose($fp);        ob_end_flush();

我的$bankInfo变量具体是这样的

array:13 [  0 => array:13 [    "type" => 1    "rate" => "低"    "name" => "

11111

" "options" => "[{"name":"A","value":"111","attrid":"","attr":""},{"name":"B","value":"111","attrid":"","attr":""},{"name":"C","value":"111","attrid":"","attr":""},{"name":"D","value":"111","attrid":"","attr":""}]" "parsing" => "" "value" => 6 "question_id" => "" "parsing_id" => "" "typeTxt" => "单选题" "Aanswer" => "111" "Banswer" => "111" "Canswer" => "111" "Danswer" => "111" ] 1 => array:13 [ "type" => 1 "rate" => "低" "name" => "

11111

" "options" => "[{"name":"A","value":"111","attrid":"","attr":""},{"name":"B","value":"111","attrid":"","attr":""},{"name":"C","value":"111","attrid":"","attr":""},{"name":"D","value":"111","attrid":"","attr":""}]" "parsing" => "" "value" => 6 "question_id" => "" "parsing_id" => "" "typeTxt" => "单选题" "Aanswer" => "111" "Banswer" => "111" "Canswer" => "111" "Danswer" => "111" ] 2 => array:13 [ "type" => 1 "rate" => "低" "name" => "

RETYUIO

" "options" => "[{"name":"A","value":"WERTYUI","attrid":"","attr":""},{"name":"B","value":"FDGHJKL","attrid":"","attr":""}]" "parsing" => "

EWRTYUI

" "value" => 10 "question_id" => "http://127.0.0.1:99" "parsing_id" => "" "typeTxt" => "单选题" "Aanswer" => "WERTYUI" "Banswer" => "FDGHJKL" "Canswer" => "" "Danswer" => "" ] 3 => array:13 [ "type" => 2 "rate" => "低" "name" => "

???

" "options" => "[{"name":"A","value":"1","attrid":"","attr":""},{"name":"B","value":"2","attrid":"","attr":""},{"name":"C","value":"3","attrid":"","attr":""}]" "parsing" => "

888

" "value" => 11 "question_id" => "" "parsing_id" => "" "typeTxt" => "多选题" "Aanswer" => "1" "Banswer" => "2" "Canswer" => "3" "Danswer" => "" ] 4 => array:13 [ "type" => 1 "rate" => "中" "name" => "可燃气体( )。" "options" => "[{"name":"A","value":" 5-15%","attrid":"","attr":""},{"name":"B","value":" 6-16%","attrid":"","attr":""},{"name":"C","value":" 5-16%","attrid":"","attr":""},{"name":"D","value":" 4-16%","attrid":"","attr":""}]" "parsing" => "这是单选题解析" "value" => 2 "question_id" => "" "parsing_id" => "" "typeTxt" => "单选题" "Aanswer" => " 5-15%" "Banswer" => " 6-16%" "Canswer" => " 5-16%" "Danswer" => " 4-16%" ] 5 => array:13 [ "type" => 1 "rate" => "中" "name" => "可燃爆炸极限二( )。" "options" => "[{"name":"A","value":" 5-15%","attrid":"","attr":""},{"name":"B","value":" 6-16%","attrid":"","attr":""},{"name":"C","value":" 5-16%","attrid":"","attr":""},{"name":"D","value":" 4-16%","attrid":"","attr":""}]" "parsing" => "这是单选题解析" "value" => 2 "question_id" => "" "parsing_id" => "" "typeTxt" => "单选题" "Aanswer" => " 5-15%" "Banswer" => " 6-16%" "Canswer" => " 5-16%" "Danswer" => " 4-16%" ] 6 => array:13 [ "type" => 2 "rate" => "低" "name" => "低压配电室着火的风险点源识别有哪些一?" "options" => "[{"name":"A","value":"明火造成人员烧伤11","attrid":"","attr":""},{"name":"B","value":"变压器自身易爆炸","attrid":"","attr":""},{"name":"C","value":"明火可能造成环境污染","attrid":"","attr":""},{"name":"D","value":" 以上均不对","attrid":"","attr":""}]" "parsing" => "这是多选题解析" "value" => 2 "question_id" => "" "parsing_id" => "" "typeTxt" => "多选题" "Aanswer" => "明火造成人员烧伤11" "Banswer" => "变压器自身易爆炸" "Canswer" => "明火可能造成环境污染" "Danswer" => " 以上均不对" ] 7 => array:13 [ "type" => 2 "rate" => "低" "name" => "测试2低压配电室着火的风险点源识别有哪些二?" "options" => "[{"name":"A","value":"测试2明火造成人员烧伤","attrid":"","attr":""},{"name":"B","value":"测试2变压器自身易爆炸","attrid":"","attr":""},{"name":"C","value":"测试2明火可能造成环境污染","attrid":"","attr":""},{"name":"D","value":"测试2以上均不对","attrid":"","attr":""}]" "parsing" => "这是多选题解析" "value" => 1 "question_id" => "" "parsing_id" => "" "typeTxt" => "多选题" "Aanswer" => "测试2明火造成人员烧伤" "Banswer" => "测试2变压器自身易爆炸" "Canswer" => "测试2明火可能造成环境污染" "Danswer" => "测试2以上均不对" ] 8 => array:13 [ "type" => 3 "rate" => "高" "name" => "测试可然气体泄漏不会造成人员窒息和环境污染一。" "options" => "[{"name":"A","value":" 错误","attrid":"","attr":""},{"name":"B","value":" 正确","attrid":"","attr":""}]" "parsing" => "这是判断题解析" "value" => 3 "question_id" => "" "parsing_id" => "" "typeTxt" => "判断题" "Aanswer" => " 错误" "Banswer" => " 正确" "Canswer" => "" "Danswer" => "" ] 9 => array:13 [ "type" => 3 "rate" => "中" "name" => "测试判断题二。" "options" => "[{"name":"A","value":" 错误","attrid":"","attr":""},{"name":"B","value":" 正确","attrid":"","attr":""}]" "parsing" => "这是判断题解析" "value" => 1 "question_id" => "" "parsing_id" => "" "typeTxt" => "判断题" "Aanswer" => " 错误" "Banswer" => " 正确" "Canswer" => "" "Danswer" => "" ] 10 => array:13 [ "type" => 5 "rate" => "中" "name" => "测试这是填空题一()" "options" => "" "parsing" => "填空题解析(若无解析本行可不填)" "value" => 3 "question_id" => "" "parsing_id" => "" "typeTxt" => "填空题" "Aanswer" => "" "Banswer" => "" "Canswer" => "" "Danswer" => "" ] 11 => array:13 [ "type" => 4 "rate" => "高" "name" => "测试如何保持身体健康一? " "options" => "" "parsing" => "无 (若无解析本行可不填)" "value" => 3 "question_id" => "" "parsing_id" => "" "typeTxt" => "简答题" "Aanswer" => "" "Banswer" => "" "Canswer" => "" "Danswer" => "" ] 12 => array:13 [ "type" => 6 "rate" => "中" "name" => "测试这是阅读理解题目一 " "options" => "" "parsing" => "无 (若无解析本行可不填)" "value" => 1 "question_id" => "" "parsing_id" => "" "typeTxt" => "阅读理解题" "Aanswer" => "" "Banswer" => "" "Canswer" => "" "Danswer" => "" ]]

核心代码:

$tmp = new TemplateProcessor($path . 'Word.docx');  打开一个模板

模板是这样的:

$tmp->setValue('examTitle', $paper['title']);  php程序会识别模板里的examTitle  模板中的${examTitle} 相当于占位符   当程序识别到的时候   会对其进行替换(小坑  模板其实是表格形式   不过我这里对border设置的颜色和背景色一致)$tmp->cloneRow('singles', $singlesNum);  克隆行数  (若不在表格中  则会报错)
for ($i = 0; $i < $subjectivityNum; $i++) {    $tmp->setValue("subjectivity#" . ($i + 1), $subjectivity[$i]['typeTxt']);    $tmp->setValue("subjectivityName#" . ($i + 1), $subjectivity[$i]['name']);}

想循环变量赋值该怎么办呢   只需要将占位符标记后面加上#即可

$tmp->saveAs($path . 'target.docx');保存新文件

 

来源地址:https://blog.csdn.net/qq_58778333/article/details/130861360

--结束END--

本文标题: 记一次php 导出word文档

本文链接: https://www.lsjlt.com/news/391608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 记一次php 导出word文档
    导出试卷  先看效果 $paper = Exam::where('id', $data['examid'])->field('paper_id,title')->find(); $bankIds = Paper...
    99+
    2023-09-03
    php word 开发语言
  • PHP导出Word文档原理是什么
    本篇文章给大家分享的是有关PHP导出Word文档原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。PHP语言可以被我们用来实现很多功能。比如在网站建设中,我们经常会用到网...
    99+
    2023-06-17
  • java 导出word,java根据提供word模板导出word文档
    本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字、图片填充。一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概念讲解(api自行查阅文档)。 这...
    99+
    2023-08-17
    word java 开发语言
  • PHP导出word方法(一phpword)
    背景 上一篇:MHT导出word文档 上一篇,已经记录了使用MHT来生成并导出word文档的方法,这次,来记录一下使用php的扩展phpword来生成并导出word; 使用步骤 gitlab上comp...
    99+
    2023-09-01
    php laravel
  • Java POI导出富文本的内容到word文档
    一、需求: 当创建使用富文本编辑器,操作完的数据,传输到后台都是带有html标签的。 如:标题头第二个标题百度搜索 我们想把富文本数据转换为Word内容。 二,依赖 org.jsoup jsoup 1.12.1 or...
    99+
    2023-08-31
    java Powered by 金山文档
  • Java实现导出Word文档的示例代码
    最近公司做项目,需要导出word或者PDF文档,PDF实现文档已经轻车熟路了,想研究搞一下word文档。经过调研发现了一个好用的开源项目Poi-tl http://deepoove....
    99+
    2023-02-09
    Java导出Word文档 Java导出Word Java Word
  • Java 实现导出 Word 文档的方法详解
    系列文章目录 文章目录 系列文章目录前言一、添加 Apache POI 依赖:二、创建 Word 文档:三、添加内容到文档:四、导出文档:总结 前言 在 Java 应用程序中,有时候我...
    99+
    2023-09-02
    java word 开发语言
  • nodejs+vue如何实现在客户端导出word文档
    小编给大家分享一下nodejs+vue如何实现在客户端导出word文档,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题node...
    99+
    2024-04-02
  • Java POI导出Word、Excel、Pdf文档(可在线预览PDF)
    导入依赖Pom.xml                     org.apache.poi             poi             3.14          org.apache.poi poi-oo...
    99+
    2023-09-20
    java word excel
  • Java SpringBoot集成文件之如何使用POI导出Word文档
    目录前言知识准备什么是POI实现案例Pom依赖导出Word前言 通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标...
    99+
    2022-11-13
    Java SpringBoot集成文件 Java 如何使用POI导出Word文档
  • word文档如何打出分数
    要在Word文档中打出分数,可以使用以下几种方法:1. 使用分数格式:在Word文档中,选择想要插入分数的位置,然后点击“插入”选项...
    99+
    2023-09-29
    word
  • php怎么生成word文档
    可以使用PHP库PHPWord来生成和操作Word文档。以下是一个简单的示例: 首先,你需要安装PHPWord库。可以通过Comp...
    99+
    2024-03-15
    php
  • 【Python】导出docx格式Word文档中的文本、图片和附件等
    【Python】导出docx格式Word文档中的文本、图片和附件等 零、需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理。需要批量提取Word文档中的图片和附件以便进一步检...
    99+
    2023-09-21
    python word 开发语言
  • Java项目中的word文档如何利用Freemarker进行导出
    本篇文章给大家分享的是有关Java项目中的word文档如何利用Freemarker进行导出,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现步骤用Microsoft Offic...
    99+
    2023-05-31
    freemarker word java
  • vue实现导出word文档功能实例(含多张图片)
    目录一、实现效果  二、所需插件三、word文档模板 四、封装js 文件五、实现导出word文档总结一、实现效果   以填写并导出房...
    99+
    2024-04-02
  • 记一次CurrentDirectory导致的问题
    在编程中,CurrentDirectory是一个表示当前工作目录的属性。它指示了程序在运行时所在的目录。一次由CurrentDire...
    99+
    2023-09-15
    问题
  • 怎么将php文件转为word文档
    在日常的工作中,我们经常会遇到需要将 PHP 格式的文档转换成 Word 文档的需求。尽管这个需求在很多人看来不是很常见,但它实际上是非常实用的,尤其是对于那些需要频繁处理大量文档的人来说。在本文中,我们将介绍如何将 PHP 格式的文档转换...
    99+
    2023-05-14
    php
  • PHP使用PHPWord生成word文档
    阅读目录 阐述 安装 使用 自动加载 实例化 添加文字内容 链接 图片 页眉 ...
    99+
    2023-09-03
    php 开发语言 前端
  • 如何将php文件转为word文档
    本篇内容介绍了“如何将php文件转为word文档”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准备工作在开始转换之前,您需要确保已经安装了 ...
    99+
    2023-07-05
  • word怎么导出参考文献
    要导出Word文档中的参考文献,可以按照以下步骤操作:1. 在Word文档中,确保已经按照正确的引用格式插入了所有的参考文献。可以使...
    99+
    2023-10-07
    word
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作