<?php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
class Excel {
private $root;
private $view;
private $export;
public function __construct()
{
$this->root = $_SERVER['DOCUMENT_ROOT'];
$this->view = $this->root.DIRECTORY_SEPARATOR.'application'.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.'excel'.DIRECTORY_SEPARATOR;
$this->export = $this->root.DIRECTORY_SEPARATOR.'assets'.DIRECTORY_SEPARATOR.'upload'.DIRECTORY_SEPARATOR.'excel'.DIRECTORY_SEPARATOR;
}
public function create()
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'hello world.xlsx');
}
public function createFromTemplate($filename, $template, $data, $format = 'Xls', $output = 'save')
{
$spreadsheet = IOFactory::load($this->view.$template.'.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
if(!empty($data))
{
foreach ($data as $key => $value)
{
$worksheet->getCell($key)->setValue($value);
}
}
$mime = $format == 'Xls' ? 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'application/pdf';
$ext = $format == 'Xls' ? '.xlsx' : '.pdf';
$writer = $format == 'Xls' ? new Xlsx($spreadsheet) : new Mpdf($spreadsheet);
if($output == 'save')
$writer->save($this->export.$filename.$ext);
else
{
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.$filename.$ext.'"');
$writer->save("php://output");
}
}
}