我引用的拓展是:
"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代码 这里不做细谈
一起看看效果:
 



















