Test For Excel File Saved With Ribbon Data (#2883)
File from https://www.rondebruin.nl/win/s2/win003.htm. I have been in conversation with the author, who has no objection to its use. I have not actually opened the file in Excel (at least not with macros enabled); I am using it merely to demonstrate that the ribbon data is read and written correctly. Test added; no source code changed. This should slightly increase coverage for Reader/Xlsx (moderate), Writer/Xlsx (slight), and Spreadsheet (substantial). Note that this file has no Ribbon Bin objects, so some coverage is still lacking.
This commit is contained in:
parent
ed34a45891
commit
90bdc7c12e
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||||
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
||||||
|
|
||||||
|
class RibbonTest extends AbstractFunctional
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Test read/rewrite spreadsheet with ribbon data.
|
||||||
|
*/
|
||||||
|
public function testRibbon(): void
|
||||||
|
{
|
||||||
|
// The following file is downloaded, with the author's
|
||||||
|
// permission, from:
|
||||||
|
// https://www.rondebruin.nl/win/s2/win003.htm
|
||||||
|
// It is renamed, including changing its extension to zip.
|
||||||
|
$filename = 'tests/data/Reader/XLSX/ribbon.donotopen.zip';
|
||||||
|
$reader = IOFactory::createReader('Xlsx');
|
||||||
|
$spreadsheet = $reader->load($filename);
|
||||||
|
self::assertTrue($spreadsheet->hasRibbon());
|
||||||
|
$target = $spreadsheet->getRibbonXMLData('target');
|
||||||
|
self::assertSame('customUI/customUI.xml', $target);
|
||||||
|
$data = $spreadsheet->getRibbonXMLData('data');
|
||||||
|
self::assertIsString($data);
|
||||||
|
self::assertSame(1522, strlen($data));
|
||||||
|
$vbaCode = (string) $spreadsheet->getMacrosCode();
|
||||||
|
self::assertSame(13312, strlen($vbaCode));
|
||||||
|
self::assertNull($spreadsheet->getRibbonBinObjects());
|
||||||
|
self::assertNull($spreadsheet->getRibbonBinObjects('names'));
|
||||||
|
self::assertNull($spreadsheet->getRibbonBinObjects('data'));
|
||||||
|
self::assertEmpty($spreadsheet->getRibbonBinObjects('types'));
|
||||||
|
self::assertNull($spreadsheet->getRibbonBinObjects('xxxxx'));
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
|
||||||
|
$spreadsheet->disconnectWorksheets();
|
||||||
|
self::assertTrue($reloadedSpreadsheet->hasRibbon());
|
||||||
|
$ribbonData = $reloadedSpreadsheet->getRibbonXmlData();
|
||||||
|
self::assertIsArray($ribbonData);
|
||||||
|
self::assertSame($target, $ribbonData['target'] ?? '');
|
||||||
|
self::assertSame($data, $ribbonData['data'] ?? '');
|
||||||
|
self::assertSame($vbaCode, $reloadedSpreadsheet->getMacrosCode());
|
||||||
|
self::assertNull($reloadedSpreadsheet->getRibbonBinObjects());
|
||||||
|
$reloadedSpreadsheet->disconnectWorksheets();
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Loading…
Reference in New Issue