92 lines
2.3 KiB
PHP
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);!
|
|
}
|
|
|
|
}
|