Skip to content

Commit 4ddc63d

Browse files
authored
Merge pull request #1 from kasko/named-range
Fix for 3 Issues Involving ReadXlsx and NamedRange (PHPOffice#1742)
2 parents a8e8068 + 56385b3 commit 4ddc63d

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

src/PhpSpreadsheet/Reader/Xlsx.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,7 +1277,7 @@ public function load($pFilename)
12771277
}
12781278

12791279
// Valid range?
1280-
if (stripos((string) $definedName, '#REF!') !== false || $extractedRange == '') {
1280+
if ($extractedRange == '') {
12811281
continue;
12821282
}
12831283

@@ -1347,7 +1347,7 @@ public function load($pFilename)
13471347
$extractedRange = (string) $definedName;
13481348

13491349
// Valid range?
1350-
if (stripos((string) $definedName, '#REF!') !== false || $extractedRange == '') {
1350+
if ($extractedRange == '') {
13511351
continue;
13521352
}
13531353

@@ -1395,6 +1395,9 @@ public function load($pFilename)
13951395
$locatedSheet = $excel->getSheetByName($extractedSheetName);
13961396
}
13971397

1398+
if ($locatedSheet === null && !DefinedName::testIfFormula($definedRange)) {
1399+
$definedRange = '#REF!';
1400+
}
13981401
$excel->addDefinedName(DefinedName::createInstance((string) $definedName['name'], $locatedSheet, $definedRange, false));
13991402
}
14001403
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
4+
5+
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
6+
use PHPUnit\Framework\TestCase;
7+
8+
class NamedRangeTest extends TestCase
9+
{
10+
public static function testBug1686b(): void
11+
{
12+
$xlsxFile = 'tests/data/Reader/XLSX/bug1686b.xlsx';
13+
$reader = new Xlsx();
14+
$spreadsheet = $reader->load($xlsxFile);
15+
$sheet = $spreadsheet->getActiveSheet();
16+
self::assertEquals(2.1, $sheet->getCell('A1')->getCalculatedValue());
17+
self::assertEquals('#REF!', $sheet->getCell('A2')->getCalculatedValue());
18+
self::assertEquals('#REF!', $sheet->getCell('A3')->getCalculatedValue());
19+
self::assertEquals('#NAME?', $sheet->getCell('A4')->getCalculatedValue());
20+
self::assertEquals('#REF!', $sheet->getCell('A5')->getCalculatedValue());
21+
}
22+
}

tests/data/Reader/XLSX/bug1686b.xlsx

11.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)