Экспорт с верхним и нижним колонтитулом с полной шириной - PullRequest
0 голосов
/ 14 октября 2019

Я использую Laravel Excel для экспорта файлов в CSV, HTML и PDF (с TCPDF)

Я пытаюсь экспортировать его с верхним и нижним колонтитулом на всех страницах, но не могу увидеть их в экспортированном файле.

Кроме того, результаты в файле очень уменьшены и занимают не всю ширину страницы. Как я могу сделать так, чтобы он занимал достаточно много места?

Вот мой код:

public function registerEvents(): array
    {
        return [
            BeforeExport::class => function (BeforeExport $event) {
                $event->writer->getProperties()
                    ->setTitle("Test Document")
                    ->setSubject("Test Document");
            },

            AfterSheet::class => function (AfterSheet $event) {
                $event->sheet->getDelegate()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_DEFAULT);
                $event->sheet->getDelegate()->getPageSetup()->setPaperSize(PageSetup::PAPERSIZE_A4);
                $event->sheet->getDelegate()->getPageSetup()->setFitToWidth(1);
                $event->sheet->getDelegate()->getPageSetup()->setFitToHeight(0);
                $event->sheet->getDelegate()->getPageSetup()->setScale(100);

                $event->sheet->getDelegate()->getPageSetup()->setHorizontalCentered(true);
                $event->sheet->getDelegate()->getHeaderFooter()->setOddHeader('My Header');
                $event->sheet->getDelegate()->getHeaderFooter()->setOddFooter('My Footer');

                // last column as letter value (e.g., D)
                $last_column = (count($this->results)) ? Coordinate::stringFromColumnIndex(count($this->results[0])) : 'W';
                // calculate last row (total results + header rows + column headings row + new row)
                $last_row = count($this->results) + 2 + 1 + 1;
                // set up a style array for cell formatting
                $style_text_center = [
                    'alignment' => [
                        'horizontal' => Alignment::HORIZONTAL_CENTER
                    ]
                ];

                // at row 1, insert 2 rows
                $event->sheet->insertNewRowBefore(1, 2);

                // merge cells for full-width
                $event->sheet->mergeCells(sprintf('A1:%s1',$last_column));
                $event->sheet->mergeCells(sprintf('A2:%s2',$last_column));
                $event->sheet->mergeCells(sprintf('A%d:%s%d',$last_row,$last_column,$last_row));


                // assign cell values
                $event->sheet->setCellValue('A1', 'Top Triggers Report');
                $event->sheet->setCellValue('A2', 'SECURITY CLASSIFICATION - UNCLASSIFIED [Generator: Admin]');
                $event->sheet->setCellValue(sprintf('A%d', $last_row), 'SECURITY CLASSIFICATION - UNCLASSIFIED [Generated: ...]');

                // assign cell styles
                $event->sheet->getStyle('A1:A2')->applyFromArray($style_text_center);
                $event->sheet->getStyle(sprintf('A%d', $last_row))->applyFromArray($style_text_center);
            },
        ];
    }

В настоящее время результаты видны здесь Shrinked on width

Как сделать так, чтобы она занимала всю ширину страницы, чтобы она выглядела хорошо.

...