php导出excel多个sheet

news/2024/7/21 5:10:13 标签: excel

我引用的拓展是:

"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.niftyadmin.cn/n/300354.html

相关文章

【Ubuntu18.04】Docker配置镜像源

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,YOLO领域博主爱笑的男孩。擅长深度学习,活动,YOLO,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个人简…

Rust - 初识结构体

struct,或者 structure,是一个自定义数据类型,允许命名和包装多个相关的值,从而形成一个有意义的组合。如果你熟悉一门面向对象语言,struct 就像对象中的数据属性。 定义并实例化结构体 结构体和之前介绍过的元组类似…

cordova-10 打apk

Android升级到api 31后,ionic打出来的release包默认是一个aab文件,要想走以前的手动签名和zipalign的流程我需要打一个没有签名的apk的包,参考以下文章: Android Platform Guide - Apache Cordova Ionic Cordova Build for Andro…

【Git 教程】—git指令详细解析,上机操作,简单易懂

目录 一. 集中式和分布式的区别 1. 集中式版本控制工具 2. 分布式版本控制工具 3. 基本概念 4. 配置信息 二. 创建本地仓库(git init) 三.基础指令 1. 获取git版本号 2.查看文件的状态 3. 查看提交记录 4. 版本回退 5. git reflog 6. .gitignore文件…

【二维矩阵如何存储在一维数组中(行优先和列优先)】

列优先和行优先的性能取决于具体的硬件架构和代码访问模式。在现代计算机中,内存访问的局部性(locality of reference)对性能至关重要。局部性分为两类:时间局部性(temporal locality)和空间局部性(spatial locality)。时间局部性表示最近访问过的数据项很可能在不久的…

集合练习(2)

目录 第一题 思路分析: HashSet去重机制 TreeSet去重机制 第二题 思路分析: 第三题 思路分析: Vector和ArrayList的比较 第一题 代码演示: 思路分析: HashSet去重机制 //HashSet实现去重是因为 在底层会根据你…

asp.net+sqlserver社区小区流动人口管理系统

该系统的基本功能包括用户登录,管理员信息管理,社区组织管理,常住人口管理,流动人口管理,社区事务管理,社区服务管理,系统用户管理,修改密码等功能。 (3)功能…

不是吧,3 : 00 面试,还没10分钟就出来了,问的也太...

从外包出来,没想到死在另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到2月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推我去…