php导出excel多个sheet

news2025/1/17 15:47:34

我引用的拓展是:

"phpoffice/phpspreadsheet": "^1.4",

我的$accept数据是这样的  "data": {

        "examStu": [

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "大猛1",

                "no": "sy_stud",

                "name": "小明",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "非正常人类研究中心",

                "no": "sy_student2",

                "name": "试用学生2",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "非正常人类研究中心",

                "no": "sy_student1",

                "name": "试用学生1",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 137,

                "isSubmit": true,

                "status": 1,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "非正常人类研究中心",

                "no": "9987234761123",

                "name": "范仲淹AAA",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "非正常人类研究中心",

                "no": "sy_student3",

                "name": "试用学生3",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "非正常人类研究中心",

                "no": "131",

                "name": "学生2",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 16:28:16",

                "className": "非正常人类研究中心",

                "no": "130",

                "name": "学生3",

                "submitExam": "2023-04-27 16:28:16",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            },

            {

                "ctime": "2023-04-27 20:18:54",

                "className": "非正常人类研究中心",

                "no": "133",

                "name": "学生1",

                "submitExam": "2023-04-27 20:18:54",

                "stuExamId": 0,

                "isSubmit": false,

                "status": 0,

                "realScore": 0,

                "hundredScore": 0

            }

        ],

        "scoreInfo": [

            {

                "sixScore": 1,

                "sevenScore": 0,

                "eightScore": 0,

                "nineScore": 0,

                "tenScore": 0,

                "classes": "192",

                "className": "非正常人类研究中心"

            },

            {

                "sixScore": 0,

                "sevenScore": 0,

                "eightScore": 0,

                "nineScore": 0,

                "tenScore": 0,

                "classes": "195",

                "className": "大猛1"

            }

        ],

        "examInfo": {

            "passRate": 0,

            "maxRate": 0,

            "minRate": 0,

            "middleRate": 0,

            "avgRate": 0

        }

    }

具体导出代码是这样的:

 $accept = self::analyseExam($datas);
        $title = array('加入时间', '班级', '学号', '姓名', '交卷时间', '学生交卷序号(未交卷为0)', '提交状态', '批改状态', '实际得分', '百分制得分');

        $data = $accept['examStu'];
        $spreadsheet = new Spreadsheet();
        $worksheet = $spreadsheet->getActiveSheet()->setTitle('sheet1');
        $sheet_two = $spreadsheet->createSheet(2)->setTitle('sheet2');

        $writer = new Xlsx($spreadsheet);
        //表头
        //设置单元格内容
        foreach ($title as $key => $value) {
            $worksheet->setCellValueByColumnAndRow($key + 1, 1, $value);
        }
        $twoTitle = ['及格率', '最高分', '最低分', '中位分', '平均分'];
        foreach ($twoTitle as $k => $v) {
            $sheet_two->setCellValueByColumnAndRow($k + 1, 1, $v);
        }
        $row = 2; //第二行开始

        $data = $data->toArray();
        foreach ($data as $key => &$value) {
//            $data[$key]['incId'] = $key+1;
            if ($value['isSubmit'] == false) {
                $value['isSubmit'] = '未提交';
            } else {
                $value['isSubmit'] = '已提交';
            }
            if ($value['status'] == false || $value['status'] == 1) {
                $value['status'] = '未批改';
            } elseif ($value['status'] == 2) {
                $value['status'] = '已批改';
            }
        }
//        exit();

        foreach ($data as $item) {
            $column = 1;
            foreach ($item as $value) {
                $worksheet->setCellValueByColumnAndRow($column, $row, $value);
                $column++;
            }
            $row++;
        }
        $twoData = $accept['examInfo'];
        $row = 2; //第二行开始
        foreach ($twoData as $items) {
            $column = 1;
            $sheet_two->setCellValueByColumnAndRow($column, $row, $items);
            $sheet_two->setCellValueByColumnAndRow($column + 1, $row, $items);
            $sheet_two->setCellValueByColumnAndRow($column + 2, $row, $items);
            $sheet_two->setCellValueByColumnAndRow($column + 3, $row, $items);
            $sheet_two->setCellValueByColumnAndRow($column + 4, $row, $items);
        }

        # 保存为xlsx
        $filename = 'TESTExcel.xlsx';

        $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
        $writer->save($filename);

        # 浏览器下载
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $filename . '"');
        header('Cache-Control: max-age=0');

        return $writer->save('php://output');

总结:核心多个sheet代码为:

$spreadsheet = new Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet()->setTitle('sheet1');
$sheet_two = $spreadsheet->createSheet(2)->setTitle('sheet2');

其他代码为渲染数据进excel代码   这里不做细谈

一起看看效果:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript—数据类型转换

目录 1、起 源 理 念 2、特 点 框 架 书 写 位 置 注 释 浏览器调试js代码 3、变量 ① 全局变量 ② 局部变量 ③ 常量 4、数据类型 严格检查数据类型-use strict ① 数 组 ② 字符串 6、类型转换 ① 字符串转数字 ② 字符串转bool值 ③ 能力判断 7、编码方…

自动控制原理笔记-频率响应法-稳定裕度

目录 一、增益裕度h(幅值裕度, gain margin) 二、相角裕度g (phase margin) 三、根据Bode图确定稳定裕度 相角裕度 一、增益裕度h(幅值裕度, gain margin) 开环幅相特性曲线(奈氏曲线)G(jw)与负实轴…

教你一招在VMware的NAT模式下,两台电脑如何互相访问对方的虚拟机

目录 一. 准备工作二. 开始2.1 设置NAT模式2.2 进行NAT模式设置2.3 XShell访问对方虚拟机 一. 准备工作 需要两台电脑(我准备了两台win10) VMware虚拟机:【官网下载】两台win10电脑上都安装好centos 7系统(我这里是centos 7版本…

3.Java线程

Java线程 3.1 创建和运行线程 方法一,直接使用Thread import lombok.extern.slf4j.Slf4j;/*** 使用匿名内部类创建线程* author xc* date 2023/4/30 16:19*/ Slf4j public class Test1 {public static void main(String[] args) {Thread thread new Thread(){Ov…

OpenCV-Python图像几何变换

概念:几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。 缩放 cv2.resize()函数用于缩放图像 det cv2.resize(src, dsize[,dst[,fx[,fy[,interp…

入门级BP神经网络实现回归预测的原理与python代码

文章目录 一、BP神经网络是什么?二、BP神经网络的原理?三、BP神经网络预测过程如下1.初始化参数:2.前向传播:3.反向传播:4.更新参数:5.重复上述过程,直到满足收敛条件或达到最大迭代轮次。 四、…

【Liunx】进程地址空间

文章目录 📖 前言1. 环境变量收尾1.1 认识bash进程:1.2 环境变量具有全局属性:1.3 内建命令: 2. 进程地址空间2.1 Liunx — 地址空间验证:2.2 感知地址空间的存在:2.3 认识地址空间:2.3 - 1&…

C++右值引用(左值表达式、右值表达式)(移动语义、完美转发(右值引用+std::forward))(有问题悬而未决)

文章目录 什么是右值?是什么是右值引用?什么是移动语义?什么是完美转发?(右值引用std::forward) 什么是右值? 在 C 中,表达式可以分为左值表达式和右值表达式。左值表达式指的是可以…

《常规脉搏传输时间作为人体血压变化标志》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: 论文试图解决什么问题? Q2: 这是否是一个新的问题? Q3: 这篇文章要验证一个什么科学假设? Q4: 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员? …

OpenCV教程——加载、修改、保存图像

1.颜色空间 颜色空间:也称彩色模型(又称彩色空间或彩色系统)。本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可…

「二线豪华」或成历史,理想反超沃尔沃再树「里程碑」

今年的上海车展,除了占据C位的新能源汽车,还有传统车企。 上海车展开幕前,沃尔沃汽车大中华区销售公司总裁钦培吉在新车发布会上直言:“新势力会的,我们三年就学会了;我们会的,新势力十年都学不…

SQL事务与存储引擎

索引回顾: 索引是一个排序的列表,包含字段的值和值所在行数据的物理地址 事务是一个机制,一个操作序列(一组操作命令),事务会把所有命令当做一个整体向系统提交或撤销操作,要么都执行&#xf…

MySQL中的Join 的算法(NLJ、BNL、BKA)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 摘要什么是JoinIndex Nested-Loop JoinBlock Nested-Loop JoinMRR & BKA总结 摘要 Join是MySQL中最常见的查询操作之一,用于从多个表中获取数据并将它们组合在一起。Join算法通常使…

【概念大全(关系,码,选择,投影,连接,运算)】第二章 关系数据库

第二章 关系数据库 1. 关系的基本概念1. 什么是域2. 笛卡尔积3. 笛卡尔积中 有意义的子集 就是关系4. 候选码 (是唯一标识符 并不是用 只有一个进行判断)5. 全码(一行中都不重复)6. 主码(候选码选一个就是主码&#xf…

手术麻醉临床信息系统源码,实时自动采集麻醉和监护设备的数据

手术麻醉临床信息系统源码 手术麻醉临床信息系统实时采集麻醉和监护设备的数据,实现术前、术中、术后全手术过程的数字化管理,为手术室提供全数字化的业务管理、临床管理、费用管理、材料管理等。同时通过与 HIS、EMR、PACS、LIS 等系统无缝集成&#x…

Linux中信号的基础知识

信号的概念 Linux操作系统中,信号是一种进程间通信(Inter-Process Communication, IPC)机制,用于向其他进程发送通知或指示,通常是为了通知特定事件的发生,如程序终止、用户按下特定按键等。信号提供了一种…

java获取输入内容的方法

Java中的对象类型可以有多种,比如 Object、 StringBuilder等,其中 Object和 String是最常用的对象类型,而 StringBuilder类是一种特殊的类,它能通过继承来创建其他的对象。 我们在平时的工作中经常会遇到需要获取输入内容的情况&a…

界面控件DevExpress Blazor UI v22.2亮点:全新的Window组件

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具,该组件拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应…

详解async 与 await,带您理解Playwright使用异步方法的正确姿势!

大家在使用python做playwright自动化测试的过程中,一定会发现下面这种异步用法 async def func():await apiawait api 很多同学可能只是按照这种写法来编写项目的自动化测试代码,对于具体细节可能并不了解,今天我就来讲一下playwright异步用…

基于fNIRS的脑功能连接分析:图论方法

导读 背景:fNIRS是一种利用近红外光谱进行功能神经成像的光学脑监测技术。它使用近红外光来测量大脑活动,并估计由于运动活动而引起的大脑皮层血流动力学活动。fNIRS通过光学吸收来测量含氧和脱氧血红蛋白中氧水平的变化。多源噪声和伪影干扰导致的信号…