Skip to content

Commit 8225096

Browse files
authored
Merge pull request #4098 from oleibman/issue912
Xlsx Reader and Print/Show Gridlines
2 parents bf0281b + f632732 commit 8225096

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

src/PhpSpreadsheet/Reader/Xlsx/SheetViewOptions.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,12 @@ private function sheetFormat(SimpleXMLElement $sheetFormatPrx): void
122122
private function printOptions(SimpleXMLElement $printOptionsx): void
123123
{
124124
$printOptions = $printOptionsx->attributes() ?? [];
125-
if (isset($printOptions['gridLinesSet']) && self::boolean((string) $printOptions['gridLinesSet'])) {
126-
$this->worksheet->setShowGridlines(true);
127-
}
125+
// Spec is weird. gridLines (default false)
126+
// and gridLinesSet (default true) must both be true.
128127
if (isset($printOptions['gridLines']) && self::boolean((string) $printOptions['gridLines'])) {
129-
$this->worksheet->setPrintGridlines(true);
128+
if (!isset($printOptions['gridLinesSet']) || self::boolean((string) $printOptions['gridLinesSet'])) {
129+
$this->worksheet->setPrintGridlines(true);
130+
}
130131
}
131132
if (isset($printOptions['horizontalCentered']) && self::boolean((string) $printOptions['horizontalCentered'])) {
132133
$this->worksheet->getPageSetup()->setHorizontalCentered(true);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
6+
7+
use PhpOffice\PhpSpreadsheet\Spreadsheet;
8+
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
9+
10+
class GridlinesTest extends AbstractFunctional
11+
{
12+
/**
13+
* @dataProvider loadDataProvider
14+
*/
15+
public function testGridlines(bool $display, bool $print): void
16+
{
17+
$spreadsheet = new Spreadsheet();
18+
$sheet1 = $spreadsheet->getActiveSheet();
19+
$sheet2 = $spreadsheet->createSheet();
20+
$sheet2->setTitle('deliberatelyblank');
21+
$sheet1->setShowGridlines($display);
22+
$sheet1->setPrintGridlines($print);
23+
$sheet1->fromArray(
24+
[
25+
[1, 2, 3],
26+
[4, 5, 6],
27+
[7, 8, 9],
28+
]
29+
);
30+
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
31+
$spreadsheet->disconnectWorksheets();
32+
$rsheet1 = $reloadedSpreadsheet->getSheet(0);
33+
$rsheet2 = $reloadedSpreadsheet->getSheet(1);
34+
self::assertSame($display, $rsheet1->getShowGridlines());
35+
self::assertSame($print, $rsheet1->getPrintGridlines());
36+
self::assertTrue($rsheet2->getShowGridlines());
37+
self::assertFalse($rsheet2->getPrintGridlines());
38+
$reloadedSpreadsheet->disconnectWorksheets();
39+
}
40+
41+
public static function loadDataProvider(): array
42+
{
43+
return [
44+
[true, true],
45+
[true, false],
46+
[false, true],
47+
[false, false],
48+
];
49+
}
50+
}

0 commit comments

Comments
 (0)