diff --git a/docs/references/features-cross-reference.md b/docs/references/features-cross-reference.md
index 9dcf8d91..05b8c117 100644
--- a/docs/references/features-cross-reference.md
+++ b/docs/references/features-cross-reference.md
@@ -1220,13 +1220,13 @@
| Merged Cells |
- |
- |
- |
- |
+ ✔ |
✔ |
|
- |
+ ✔ |
+ ✔ |
+ N/A |
+ N/A |
|
|
|
diff --git a/src/PhpSpreadsheet/Reader/Gnumeric.php b/src/PhpSpreadsheet/Reader/Gnumeric.php
index d3cdf1b0..80ca46cb 100644
--- a/src/PhpSpreadsheet/Reader/Gnumeric.php
+++ b/src/PhpSpreadsheet/Reader/Gnumeric.php
@@ -270,7 +270,9 @@ class Gnumeric extends BaseReader
$commentAttributes = $comment->attributes();
// Only comment objects are handled at the moment
if ($commentAttributes->Text) {
- $this->spreadsheet->getActiveSheet()->getComment((string) $commentAttributes->ObjectBound)->setAuthor((string) $commentAttributes->Author)->setText($this->parseRichText((string) $commentAttributes->Text));
+ $this->spreadsheet->getActiveSheet()->getComment((string) $commentAttributes->ObjectBound)
+ ->setAuthor((string) $commentAttributes->Author)
+ ->setText($this->parseRichText((string) $commentAttributes->Text));
}
}
}
diff --git a/src/PhpSpreadsheet/Writer/Xls/Worksheet.php b/src/PhpSpreadsheet/Writer/Xls/Worksheet.php
index 84844d3d..c3d5d8f4 100644
--- a/src/PhpSpreadsheet/Writer/Xls/Worksheet.php
+++ b/src/PhpSpreadsheet/Writer/Xls/Worksheet.php
@@ -390,7 +390,13 @@ class Worksheet extends BIFFwriter
// Row dimensions
foreach ($phpSheet->getRowDimensions() as $rowDimension) {
$xfIndex = $rowDimension->getXfIndex() + 15; // there are 15 cellXfs
- $this->writeRow($rowDimension->getRowIndex() - 1, (int) $rowDimension->getRowHeight(), $xfIndex, $rowDimension->getVisible(), $rowDimension->getOutlineLevel());
+ $this->writeRow(
+ $rowDimension->getRowIndex() - 1,
+ (int) $rowDimension->getRowHeight(),
+ $xfIndex,
+ !$rowDimension->getVisible(),
+ $rowDimension->getOutlineLevel()
+ );
}
// Write Cells
@@ -1181,7 +1187,7 @@ class Worksheet extends BIFFwriter
// collapsed. The zero height flag, 0x20, is used to collapse a row.
$grbit |= $level;
- if ($hidden) {
+ if ($hidden === true) {
$grbit |= 0x0030;
}
if ($height !== null) {
diff --git a/tests/PhpSpreadsheetTests/Writer/Xls/RowVisibilityTest.php b/tests/PhpSpreadsheetTests/Writer/Xls/RowVisibilityTest.php
new file mode 100644
index 00000000..055ee1b9
--- /dev/null
+++ b/tests/PhpSpreadsheetTests/Writer/Xls/RowVisibilityTest.php
@@ -0,0 +1,37 @@
+getActiveSheet();
+ foreach ($visibleRows as $row => $visibility) {
+ $worksheet->setCellValue("A{$row}", $row);
+ $worksheet->getRowDimension($row)->setVisible($visibility);
+ }
+
+ $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
+ $reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
+ foreach ($visibleRows as $row => $visibility) {
+ self::assertSame($visibility, $reloadedWorksheet->getRowDimension($row)->getVisible());
+ }
+ }
+
+ public function dataProviderReoVisibility(): array
+ {
+ return [
+ [
+ [1 => true, 2 => false, 3 => false, 4 => true, 5 => true, 6 => false],
+ ],
+ ];
+ }
+}