} } } } ///// } } //Write $teacherListArray into database $teacherListArrayCount0 = count($teacherListArray); for ($i = 0; $i < $teacherListArrayCount0; $i++) { $targetId = $teacherListArray[$i]['ID']; table_data_change($TEACHER_TABLE_NAME, $TEACHER_TABLE_KEY_NAMES_ARRAY, $targetId, $teacherListArray[$i]); } //Write $classroomScheduleArray into database $classroomScheduleArrayCount0 = count($classroomScheduleArray); vars_checkout($classroomScheduleArrayCount0, "classroomScheduleArrayCount0"); for ($i = 0; $i < $classroomScheduleArrayCount0; $i++) { table_data_add($CLASSROOM_SCHEDULE_TABLE_NAME, $CLASSROOM_SCHEDULE_TABLE_KEY_NAMES_ARRAY, $classroomScheduleArray[$i]); } } //Bracket for reschedule determinative syntax //Load in session for global table name load. $_SESSION['targetTableName'] = $CLASSROOM_SCHEDULE_TABLE_NAME; $_SESSION['targetPageSwitch'] = $PAGE_SWITCH; //Load the course key-name union array $courseKeyNameUnionArray = course_key_name_union_array_get($courseListArray); //Reunion the classroom array for classroom schedule output $classroomScheduleArrayReunion = classroom_schedule_array_reunion($classroomScheduleArray, $courseKeyNameUnionArray); //------ -[ Views Functions ]- ------ div_head_output_with_class_option("mainMiddle"); //Print Main Title
/** * total_schedule_excel_export Function * This function export the excel documents by PHPExcel plugins. * * @category PHPExcel * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @version 1.7.7, 2012-05-19 * @param array $total_schedule_array, string $target_semester, string $target_week, array $course_key_name_union_array * @return false */ function total_schedule_excel_export($total_schedule_array, $target_semester, $target_week, $course_key_name_union_array) { $totalScheduleArrayCount0 = count($total_schedule_array); $courseKeyNameUnionArrayCount0 = count($course_key_name_union_array); $target_week++; //For week value $excelFileName = __DIR__ . "\\..\\temp\\totalSchedule_S" . $target_semester . "W" . $target_week . ".xlsx"; // Create new PHPExcel object echo date('H:i:s'), " Create new PHPExcel object", PHP_EOL; $objPHPExcel = new PHPExcel(); // Set document properties echo date('H:i:s'), " Set document properties", PHP_EOL; $objPHPExcel->getProperties()->setCreator("default")->setLastModifiedBy("default")->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")->setCategory("Test result file"); echo date('H:i:s'), " Adding data", PHP_EOL; //Export title $titleName = $target_semester . "学年度 第" . $target_week . "周 总课表"; $objPHPExcel->setActiveSheetIndex(0)->setCellValue("A1", $titleName); //Export title info $objPHPExcel->setActiveSheetIndex(0)->setCellValue("A2", "工种"); $titleColCounter = "B"; for ($i = 1; $i < $courseKeyNameUnionArrayCount0; $i++) { $courseKeyName = "COURSE_" . $i; $titleCol = $titleColCounter . "2"; $courseName = $course_key_name_union_array[$courseKeyName]; $objPHPExcel->setActiveSheetIndex(0)->setCellValue($titleCol, $courseName); for ($j = 0; $j < 2; $j++) { $titleColCounter++; } } $objPHPExcel->setActiveSheetIndex(0)->setCellValue("A3", "课节"); $titleColCounter = "B"; for ($i = 1; $i < $courseKeyNameUnionArrayCount0; $i++) { $partName = "1234"; $titleCol = $titleColCounter . "3"; $objPHPExcel->setActiveSheetIndex(0)->setCellValue($titleCol, $partName); $titleColCounter++; $partName = "5678"; $titleCol = $titleColCounter . "3"; $objPHPExcel->setActiveSheetIndex(0)->setCellValue($titleCol, $partName); $titleColCounter++; } //Export main info $colCounter = 4; //Title line will take 3 line $lastWeek = -1; for ($totalScheduleArrayCounter = 0; $totalScheduleArrayCounter < $totalScheduleArrayCount0; $totalScheduleArrayCounter++) { $rowCounter = 'A'; $week = $total_schedule_array[$totalScheduleArrayCounter]['WEEK']; //Blank line confirm $avaliableCourseCounter = 0; for ($i = 1; $i < $courseKeyNameUnionArrayCount0; $i++) { for ($j = 0; $j < 4; $j++) { $coursePartKeyName = "COURSE_" . $i . "_" . $j; if ($total_schedule_array[$totalScheduleArrayCounter][$coursePartKeyName]) { $avaliableCourseCounter++; } } } vars_checkout($avaliableCourseCounter, "avaliableCourseCounter"); if ($total_schedule_array[$totalScheduleArrayCounter]['COURSE_0_0'] && $avaliableCourseCounter == 0) { continue; } foreach ($total_schedule_array[$totalScheduleArrayCounter] as $key => $value) { if ($key == "id") { continue; } //Print week if ($key == "WEEK" && $week != $lastWeek) { if ($week == 0) { $value = '周一'; } elseif ($week == 1) { $value = '周二'; } elseif ($week == 2) { $value = '周三'; } elseif ($week == 3) { $value = '周四'; } elseif ($week == 4) { $value = '周五'; } } elseif ($key == "WEEK") { $value = ''; } if ($key == "SEMESTER_WEEK") { continue; } if ($key == 'COURSE_0_0' || $key == 'COURSE_0_1' || $key == "COURSE_0_2" || $key == "COURSE_0_3") { continue; } $explodeUnderlineKey = explode("_", $key); $courseSerialNumber = $explodeUnderlineKey[1]; $coursePartSerialNumber = $explodeUnderlineKey[2]; if ($key == 'COURSE_' . $courseSerialNumber . '_1' || $key == 'COURSE_' . $courseSerialNumber . '_3') { continue; } // ignore the next part of course $serial = $rowCounter . $colCounter; //Create $objPHPExcel->setActiveSheetIndex(0)->setCellValue($serial, $value); //print "<br />[".$serial."]".$value; //For test $rowCounter++; } //Update the lastWeek and $colCounter $lastWeek = $week; $colCounter++; } // Rename worksheet echo date('H:i:s'), " Rename worksheet", PHP_EOL; $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // Save Excel 2007 file echo date('H:i:s'), " Write to Excel2007 format", PHP_EOL; $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save($excelFileName); echo date('H:i:s'), " File written to ", $excelFileName, PHP_EOL; // Echo memory peak usage echo date('H:i:s'), " Peak memory usage: ", memory_get_peak_usage(true) / 1024 / 1024, " MB", PHP_EOL; // Echo done echo date('H:i:s'), " Done writing file", PHP_EOL; }
if ($courseTakeRound >= $totalCourseTakeQuantityInArrange / 2) { $courseCapabilityLeftCounter += $courseCapabilityArray[$dayCounter][$courseKeyName]; } $dayCourseCounter++; } //排列课程并写入临时数组 //可排课判断条件为 课程有可用量 与 该班级有这门课且未曾上过 与 周课程量有剩余 if ($courseCapabilityLeftCounter >= $coursePeriod / 2 && $appointedClassArray[$classCounter][$courseName] != 0 && $appointedClassArray[$classCounter][$courseName] != "F" && $totalCourseTakeQuantityInArrange < $MAX_TAKE_COURSE_A_WEEK) { //检测是否为概论课 vars_checkout($courseListArray[$courseCounter]['COURSE_STYLE'], "courseListArray[\$courseCounter]['COURSE_STYLE']"); if ($courseListArray[$courseCounter]['COURSE_STYLE'] == "G") { //周课程量-1 概论课占用实训课第一节 $totalCourseTakeQuantityInArrange - 2; } //检测是否为工艺设计, 所有训练科目结束之后方可进行工艺设计 vars_checkout($allTrainCourseLeft, "allTrainCourseLeft"); if ($courseListArray[$courseCounter]['COURSE_STYLE'] == "GY" && $allTrainCourseLeft != 0) { continue; } //检测是否为考试 if ($courseListArray[$courseCounter]['COURSE_STYLE'] == "K" && $allCourseLeft != 0) { continue; } //上课名称及数量 $courseTakeInArrangeArray[$courseTakeCounter]['COURSE_KEY_NAME'] = $courseName; $courseTakeInArrangeArray[$courseTakeCounter]['COURSE_STYLE'] = $courseStyle; //$!!!courseTakeInArrangeArray[$courseTakeCounter]['QUANTITY'] = $appointedClassArray[$classCounter][$courseName]/$ONE_COURSE_PERIOD; $courseTakeInArrangeArray[$courseTakeCounter]['QUANTITY'] = $coursePeriod; //从数组中填充排列完的课程 $appointedClassArray[$classCounter][$courseName] = "F"; //填充F.Finish