0

我正在使用 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 文件屏幕截图,其中日期显示在表格中。对于每个日期,时间应显示在相应的工作表中。

出口

4

0 回答 0