public function generateRawPartA() { $sheet = $this->workbook->createSheet(); $sheet->setTitle("Part A"); $reportData = new ReportData(); $partA = $reportData->getPartAData($this->uid); $arrayStaffOffice = $this->arrayGetColumn($this->summary, 'staff_office'); $arrayStaffDepartment = $this->arrayGetColumn($this->summary, 'staff_department'); $arrayStaffName = $this->arrayGetColumn($this->summary, 'staff_name'); array_multisort($arrayStaffOffice, $arrayStaffDepartment, $arrayStaffName, SORT_DESC, $this->summary); $rowOffSet = 1; $colOffSet = 0; $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Office"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Department"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Position"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Full Name"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Responsability"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Result"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Comment by Appraiser"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Weight"); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, "Score"); $rowOffSet += 1; foreach ($this->summary as $username => $detail) { $colOffSet = 0; $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, $detail['staff_office']); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, $detail['staff_department']); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, $detail['staff_position']); $sheet->setCellValueByColumnAndRow($colOffSet++, $rowOffSet, $detail['staff_name']); $offSetAnchor = $colOffSet; if (array_key_exists($username, $partA)) { $atLeastOneRowAdded = false; foreach ($partA["{$username}"] as $partADetail) { $colOffSet = $offSetAnchor; $sheet->setCellValueByColumnAndRow($colOffSet, $rowOffSet, $partADetail['respon_name']); $sheet->getColumnDimensionByColumn($colOffSet)->setWidth('50'); $sheet->getStyleByColumnAndRow($colOffSet++, $rowOffSet)->getAlignment()->setWrapText(true); $sheet->setCellValueByColumnAndRow($colOffSet, $rowOffSet, $partADetail['respon_result']); $sheet->getColumnDimensionByColumn($colOffSet)->setWidth('50'); $sheet->getStyleByColumnAndRow($colOffSet++, $rowOffSet)->getAlignment()->setWrapText(true); $sheet->setCellValueByColumnAndRow($colOffSet, $rowOffSet, $partADetail['respon_comment']); $sheet->getColumnDimensionByColumn($colOffSet)->setWidth('50'); $sheet->getStyleByColumnAndRow($colOffSet++, $rowOffSet)->getAlignment()->setWrapText(true); $sheet->setCellValueByColumnAndRow($colOffSet, $rowOffSet, $partADetail['respon_weight']); $sheet->getStyleByColumnAndRow($colOffSet++, $rowOffSet)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $sheet->setCellValueByColumnAndRow($colOffSet, $rowOffSet, $partADetail['respon_score']); $sheet->getStyleByColumnAndRow($colOffSet++, $rowOffSet)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // Check if every cell is empty. Dont go to nest row if they are empty if (!empty($partADetail['respon_name']) || !empty($partADetail['respon_result']) || !empty($partADetail['respon_comment']) || !empty($partADetail['respon_weight']) || !empty($partADetail['respon_score'])) { $rowOffSet += 1; $atLeastOneRowAdded = true; } } if (!$atLeastOneRowAdded) { $rowOffSet += 1; } } else { $rowOffSet += 1; } } for ($i = 0; $i <= $colOffSet; $i++) { // Skip autosizing for E to G if ($i < 4 || $i > 6) { $sheet->getColumnDimensionByColumn($i)->setAutoSize(TRUE); } } }