I have this method:
public function createExcel(Task $task = null, Project $project = null, $projectTitle = null)
{
$this->spreadsheet = new Spreadsheet();
$default_border = array(
'style' => Border::BORDER_THIN,
'color' => array('rgb' => '1006A3')
);
$style_header = array(
'borders' => array(
'bottom' => $default_border,
'left' => $default_border,
'top' => $default_border,
'right' => $default_border,
),
'fill' => array(
'type' => Fill::FILL_SOLID,
'color' => array('rgb' => 'E1E0F7'),
),
'font' => array(
'bold' => true,
'size' => 16,
)
);
$style_content = array(
'borders' => array(
'bottom' => $default_border,
'left' => $default_border,
'top' => $default_border,
'right' => $default_border,
),
'fill' => array(
'type' => Fill::FILL_SOLID,
'color' => array('rgb' => 'eeeeee'),
),
'font' => array(
'size' => 12,
)
);
/**
* Header information of the excel sheet
*/
$this->spreadsheet->setActiveSheetIndex(0)
->setCellValue('A1', 'Zoekterm')
->setCellValue('B1', 'Website')
->setCellValue('C1', 'Pagina')
->setCellValue('D1', 'Paginatitel')
->setCellValue('E1', 'Paginabeschrijving')
->setCellValue('F1', 'KvK-nummer')
->setCellValue('G1', 'Vestigingsnummer')
->setCellValue('H1', 'Adresgegevens');
$this->spreadsheet->getActiveSheet()->getStyle('A1:H1')->applyFromArray($style_header); // give style to header
$dataku = [];
if ($projectTitle == BoolState::TRUE) {
foreach ($project->tasks as $task)
if ($task->status_id == TaskStatus::CLOSED)
foreach ($task->activeResults as $result)
$dataku[] = [$result->task->search_query, $result->page_url, $result->page_link, $result->page_title, $result->page_description, $result->coc_number, $result->branch_code, $result->address];
} else {
foreach ($task->activeResults as $result)
$dataku[] = [$result->task->search_query, $result->page_url, $result->page_link, $result->page_title, $result->page_description, $result->coc_number, $result->branch_code, $result->address];
}
$firststyle = 'A2';
for ($i = 0; $i < count($dataku); $i++) {
$urut = $i + 2;
$search_query = 'A' . $urut;
$page_url = 'B' . $urut;
$page_link = 'C' . $urut;
$page_title = 'D' . $urut;
$page_description = 'E' . $urut;
$coc_number = 'F' . $urut;
$branch_code = 'G' . $urut;
$address = 'H' . $urut;
$this->spreadsheet->setActiveSheetIndex(0)
->setCellValue($search_query, $dataku[$i][0])
->setCellValue($page_url, $dataku[$i][1])
->setCellValue($page_link, $dataku[$i][2])
->setCellValue($page_title, $dataku[$i][3])
->setCellValue($page_description, $dataku[$i][4])
->setCellValue($coc_number, $dataku[$i][5])
->setCellValue($branch_code, $dataku[$i][6])
->setCellValue($address, $dataku[$i][7]);
$laststyle = $page_description;
}
$this->spreadsheet->getActiveSheet()->getStyle($firststyle . ':' . $laststyle)->applyFromArray($style_content); // give style to header
$writer = $this->outType == 'xlsx' ? new PhpOfficePhpSpreadsheetWriterXlsx($this->spreadsheet) : new Xls($this->spreadsheet);
var_dump($this->stream);
if (!$this->stream) {
$writer->save($this->filename);
} else {
$this->filename = $this->filename == null ? $this->title : $this->filename;
$this->cleanOutput();
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Cache-Control: max-age=0');
header('Content-Disposition: attachment;filename="NVWA HDT ' . ucfirst($projectTitle ? $task->project->description : $task->search_query) . '.Xls"'); // file name of excel
header('Content-type: application/vnd.ms-excel');
$writer->save('php://output');
Yii::app()->end();
}
}
So the upper part is for then layout of the excel sheet. But is it cleaner to have that in a seperate method?
Thank you