mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-13 03:26:26 +00:00
9c083e271d
Fix #484. Fix #1318. Both went stale a long time ago. The images can currently specify their location as Left, Center, or Right. However, they also need to specify their type - first page, even pages, or odd pages (which is what is used when neither of the others is applicable). This is accomplished by adding 18 new constants to `Worksheet\HeaderFooter`, any of which can be specified as the second argument to `HeaderFooter::addImage`. Somewhat surprisingly, no changes are required to Xlsx Writer or Reader. Xls Reader and Writer support header/footer, but do not support using images in them. No other readers nor writers support header/footer.
57 lines
2.3 KiB
PHP
57 lines
2.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\SheetView;
|
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
|
|
|
class Issue484Test extends AbstractFunctional
|
|
{
|
|
public function testHeaderFooter(): void
|
|
{
|
|
$spreadsheet = new Spreadsheet();
|
|
$headerImage = new HeaderFooterDrawing();
|
|
$headerImage->setName('Header Logo');
|
|
$headerImage->setPath('samples/images/blue_square.png');
|
|
$headerImage->setHeight(12);
|
|
$footerImage = new HeaderFooterDrawing();
|
|
$footerImage->setName('Footer Logo');
|
|
$footerImage->setPath('samples/images/paid.png');
|
|
$footerImage->setHeight(12);
|
|
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
$worksheet->getSheetView()
|
|
->setView(SheetView::SHEETVIEW_PAGE_LAYOUT);
|
|
|
|
$worksheet->getHeaderFooter()->setDifferentFirst(true);
|
|
$worksheet->getHeaderFooter()->setFirstHeader('&C&G&R&D');
|
|
$worksheet->getHeaderFooter()->addImage($headerImage, HeaderFooter::IMAGE_HEADER_CENTER_FIRST);
|
|
|
|
$worksheet->getHeaderFooter()->setDifferentOddEven(true);
|
|
$worksheet->getHeaderFooter()->setEvenHeader('&L&G&R&D');
|
|
$worksheet->getHeaderFooter()->addImage($headerImage, HeaderFooter::IMAGE_HEADER_LEFT_EVEN);
|
|
$worksheet->getHeaderFooter()->setEvenFooter('&C&G&R&D');
|
|
$worksheet->getHeaderFooter()->addImage($footerImage, HeaderFooter::IMAGE_FOOTER_CENTER_EVEN);
|
|
|
|
$worksheet->getHeaderFooter()->setOddHeader('&C&D');
|
|
|
|
for ($currentRow = 1; $currentRow < 130; ++$currentRow) {
|
|
$worksheet->setCellValue("A$currentRow", 'Bill');
|
|
$worksheet->setCellValue("B$currentRow", 'Smith');
|
|
}
|
|
|
|
// Save spreadsheet to file and read it back
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
|
|
$spreadsheet->disconnectWorksheets();
|
|
$sheet = $reloadedSpreadsheet->getActiveSheet();
|
|
$images = $sheet->getHeaderFooter()->getImages();
|
|
self::assertSame(['LHEVEN', 'CHFIRST', 'CFEVEN'], array_keys($images));
|
|
$reloadedSpreadsheet->disconnectWorksheets();
|
|
}
|
|
}
|