我正在使用 Yii2 基础版。我有 3 个表,其字段为,
ascteacherreport - ASCTeacherReportId、ASCId、UserId、DateofReport
ascteacherreportdetails - ASCReportDetailsId、ASCTeacherReportId、时间
ascteacherreporttimedetails - ASCTeacherReportTimeDetailsId、ASCReportDetailsId、StudentId、主题、主题、信心
这 3 个表之间的关系是,一个 ascteacherreport 有许多 ascteacherreportdetails 和一个 ascteacherreportdetails 有许多 ascteacherreporttimedetails。
现在我正在使用 PHPExcel 库将数据生成到 excel 中。因此,用户创建日期为 3 月 1 日的报告,持续三个小时,例如 11 到 12、12 到 1 和 1 到 2。
每天的每个小时(时间)都有很多学生详细信息。说学生 John 代表 11 到 12、12 到 1 和 1 到 2。类似地,学生 Nick 代表 11 到 12、12 到 1 和 1 到 2 代表 3 月 1 日。
现在每个日期都应该导出为一个 Excel 文件中的新工作表。对于每个日期表,应显示特定的时间详细信息和学生详细信息。因此,对于 3 月 1 日,有 2 小时的时间详细信息,例如 11 到 12 和 12 到 1。然后时间应显示在 3 月 1 日工作表的 C5 和 D5 列中。
同样,每次都有很多学生记录。对于 11 到 12 有 3 个学生记录,那么这些学生记录应显示在 11 到 12 列中。
我在控制器中有一个函数 actionExport。excel文件被下载,我可以看到不同工作表中的日期,但有工作表不应该显示。
每张纸的时间显示不正确
public function actionExport()
{
$objPHPExcel = new \PHPExcel();
$date = \Yii::$app->db->createCommand('SELECT ASCTeacherReportId, ASCId, DateofReport from
ascteacherreport where UserId=:Id order by ASCTeacherReportId DESC')->bindValues([':Id'=>\Yii::$app->user->identity->getonlyid()])->queryAll();
$timedetails = \Yii::$app->db->createCommand('SELECT Time from ascteacherreportdetailS,
ascteacherreport WHERE ascteacherreport.ASCTeacherReportId=ascteacherreportdetails.ASCTeacherReportId AND
ascteacherreport.UserId=:id1')->bindValues([':id1'=>\Yii::$app->user->identity->getonlyid()])
->queryAll();
foreach($date as $date1)
{
$objWorkSheet = $objPHPExcel->createSheet(0); //Setting index when creating
$objWorkSheet->setTitle(''.$date1['DateofReport']);
foreach($timedetails as $timedetails1)
{
$row = 8;
$lastColumn = $objWorkSheet->getHighestColumn();
$lastColumn++;
for ($column = 'C'; $column != $lastColumn; $column++)
{
$objWorksheet->setCellValue($column.'8',''.$timedetails1['Time']);
}
}
}
ob_end_clean();
header('Content-type: application/.xlsx');
header('Content-Disposition: attachment; filename="report.xlsx"');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
}
下面是 Excel 文件屏幕截图,其中日期显示在表格中。对于每个日期,时间应显示在相应的工作表中。