How can I read a custom export value inside my custom exporter? #250
Unanswered
davidnectarestudio
asked this question in
Q&A
Replies: 1 comment
-
|
@Kreyu can you check this question, please? My CustomExporter is this one and I need to apply <?php
declare(strict_types=1);
namespace App\Shared\Infrastructure\DataTable\Exporter\Type;
use Kreyu\Bundle\DataTableBundle\Bridge\PhpSpreadsheet\Exporter\Type\AbstractPhpSpreadsheetExporterType;
use Kreyu\Bundle\DataTableBundle\Bridge\PhpSpreadsheet\Exporter\Type\PhpSpreadsheetExporterType;
use Kreyu\Bundle\DataTableBundle\Column\ColumnHeaderView;
use Kreyu\Bundle\DataTableBundle\Column\ColumnValueView;
use Kreyu\Bundle\DataTableBundle\DataTableView;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Writer\IWriter;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
final class CustomizedExporterType extends AbstractPhpSpreadsheetExporterType
{
private const int FIRST_ROW = 1;
private const string HEADER_FONT_COLOR = 'FFFFFF';
private const string HEADER_BACKGROUND_COLOR = '0057FF';
private const string FIRST_COLUMN = 'A';
private const int HEADER_COLUMN_HEIGHT = 18;
public function getParent(): string
{
return PhpSpreadsheetExporterType::class;
}
protected function createSpreadsheet(DataTableView $view, array $options = []): Spreadsheet
{
$spreadsheet = new Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();
if ($options['use_headers']) {
$this->appendRow($worksheet, array_map(
static fn (ColumnHeaderView $view) => $view->vars['label'],
$view->headerRow->children,
));
}
foreach ($view->valueRows as $valueRow) {
$this->appendRow($worksheet, array_map(
static fn (ColumnValueView $view) => $view->vars['value'],
$valueRow->children,
));
}
foreach ($worksheet->getColumnIterator() as $column) {
$worksheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
}
if ($options['use_headers']) {
$this->setStyleHeaderRow($worksheet);
}
return $spreadsheet;
}
protected function setStyleHeaderRow($worksheet): void
{
$styleArray = [
'font' => [
'bold' => true,
'color' => ['rgb' => self::HEADER_FONT_COLOR],
],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER,
],
'fill' => [
'fillType' => Fill::FILL_SOLID,
'startColor' => ['rgb' => self::HEADER_BACKGROUND_COLOR],
],
];
$highestColumn = $worksheet->getHighestColumn();
$worksheet->getStyle(self::FIRST_COLUMN.self::FIRST_ROW.":{$highestColumn}".self::FIRST_ROW)
->applyFromArray($styleArray);
$worksheet->getRowDimension(self::FIRST_ROW)->setRowHeight(self::HEADER_COLUMN_HEIGHT);
}
protected function getWriter(Spreadsheet $spreadsheet, array $options): IWriter
{
return new Xls($spreadsheet);
}
} |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi.
Can you provide me an example or short hint about how to read this custom column export setting inside my custom exporter?
Beta Was this translation helpful? Give feedback.
All reactions