Add support for reading Worksheet Visibility for Gnumeric
This commit is contained in:
parent
7fff764698
commit
23ce21901d
|
|
@ -272,6 +272,11 @@ class Gnumeric extends BaseReader
|
||||||
// name in line with the formula, not the reverse
|
// name in line with the formula, not the reverse
|
||||||
$this->spreadsheet->getActiveSheet()->setTitle($worksheetName, false, false);
|
$this->spreadsheet->getActiveSheet()->setTitle($worksheetName, false, false);
|
||||||
|
|
||||||
|
$visibility = $sheetOrNull->attributes()['Visibility'] ?? 'GNM_SHEET_VISIBILITY_VISIBLE';
|
||||||
|
if ((string) $visibility !== 'GNM_SHEET_VISIBILITY_VISIBLE') {
|
||||||
|
$this->spreadsheet->getActiveSheet()->setSheetState(Worksheet::SHEETSTATE_HIDDEN);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$this->readDataOnly) {
|
if (!$this->readDataOnly) {
|
||||||
(new PageSetup($this->spreadsheet))
|
(new PageSetup($this->spreadsheet))
|
||||||
->printInformation($sheet)
|
->printInformation($sheet)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Reader\Gnumeric;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Reader\Gnumeric;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class HiddenWorksheetTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Spreadsheet
|
||||||
|
*/
|
||||||
|
private $spreadsheet;
|
||||||
|
|
||||||
|
protected function setup(): void
|
||||||
|
{
|
||||||
|
$filename = 'tests/data/Reader/Gnumeric/HiddenSheet.gnumeric';
|
||||||
|
$reader = new Gnumeric();
|
||||||
|
$this->spreadsheet = $reader->load($filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testPageSetup(): void
|
||||||
|
{
|
||||||
|
$assertions = $this->worksheetAssertions();
|
||||||
|
|
||||||
|
foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
|
||||||
|
if (!array_key_exists($worksheet->getTitle(), $assertions)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sheetAssertions = $assertions[$worksheet->getTitle()];
|
||||||
|
foreach ($sheetAssertions as $test => $expectedResult) {
|
||||||
|
$actualResult = $worksheet->getSheetState();
|
||||||
|
self::assertSame(
|
||||||
|
$expectedResult,
|
||||||
|
$actualResult,
|
||||||
|
"Failed asserting sheet state {$expectedResult} for Worksheet '{$worksheet->getTitle()}' {$test}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function worksheetAssertions(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'Sheet1' => [
|
||||||
|
'sheetState' => Worksheet::SHEETSTATE_VISIBLE,
|
||||||
|
],
|
||||||
|
'Sheet2' => [
|
||||||
|
'sheetState' => Worksheet::SHEETSTATE_HIDDEN,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Loading…
Reference in New Issue