Files
oleibman 9c083e271d Header/Footer Images Expand "Location"
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.
2025-08-04 18:15:19 -07:00

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();
}
}