Files
Document-Management-System-…/app/Exports/BaseDocumentsExport.php
2021-04-07 06:32:42 -04:00

92 lines
2.3 KiB
PHP

<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Conditional;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithPreCalculateFormulas;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\BeforeExport;
use Maatwebsite\Excel\Events\BeforeWriting;
use Maatwebsite\Excel\Events\BeforeSheet;
use Maatwebsite\Excel\Events\AfterSheet;
abstract class BaseDocumentsExport
implements
FromCollection,
WithHeadings,
WithMapping,
ShouldAutoSize,
WithTitle,
WithCustomStartCell,
WithColumnFormatting,
WithPreCalculateFormulas,
WithEvents
{
protected $documents;
protected $title;
protected $from;
protected $to;
public function __construct($documents, string $title, $from = null, $to = null){
$this->documents = $documents;
$this->title = $title;
$this->from = $from;
$this->to = $to;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return $this->documents;
}
abstract public function headings(): array;
abstract public function map($document): array;
public function title(): string
{
return $this->title;
}
public function startCell(): string
{
return 'A1';
}
public function columnFormats(): array
{
return [
'A' => NumberFormat::FORMAT_DATE_DDMMYYYY,
];
}
public function registerEvents(): array
{
return [
AfterSheet::class => [self::class, 'afterSheet'],
];
}
public static function afterSheet(AfterSheet $event)
{
// $event->getSheet()->getDelegate()->setCellValue('A10', 'xxx');
// $style = new Color(Color::COLOR_RED);!
// $event->getSheet()->getDelegate()->setConditionalStyles('A10', $style);!
}
}