Skip to content

Commit bb3d5fa

Browse files
authored
Merge pull request #4404 from oleibman/issue4202
Permit Read to Class Which Extends Spreadsheet
2 parents 74dca30 + 9c12e9d commit bb3d5fa

File tree

13 files changed

+76
-20
lines changed

13 files changed

+76
-20
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
1111

1212
- Add ability to add custom functions to Calculation. [PR #4390](https://github.com/PHPOffice/PhpSpreadsheet/pull/4390)
1313
- Add FormulaRange to IgnoredErrors. [PR #4393](https://github.com/PHPOffice/PhpSpreadsheet/pull/4393)
14+
- Permit read to class which extends Spreadsheet. [Discussion #4402](https://github.com/PHPOffice/PhpSpreadsheet/discussions/4402) [PR #4404](https://github.com/PHPOffice/PhpSpreadsheet/pull/4404)
1415

1516
### Removed
1617

src/PhpSpreadsheet/Reader/BaseReader.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,4 +257,9 @@ public function setValueBinder(?IValueBinder $valueBinder): self
257257

258258
return $this;
259259
}
260+
261+
protected function newSpreadsheet(): Spreadsheet
262+
{
263+
return new Spreadsheet();
264+
}
260265
}

src/PhpSpreadsheet/Reader/Csv.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,7 @@ public function listWorksheetInfo(string $filename): array
257257
*/
258258
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
259259
{
260-
// Create new Spreadsheet
261-
$spreadsheet = new Spreadsheet();
260+
$spreadsheet = $this->newSpreadsheet();
262261
$spreadsheet->setValueBinder($this->valueBinder);
263262

264263
// Load into this instance
@@ -270,8 +269,7 @@ protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
270269
*/
271270
public function loadSpreadsheetFromString(string $contents): Spreadsheet
272271
{
273-
// Create new Spreadsheet
274-
$spreadsheet = new Spreadsheet();
272+
$spreadsheet = $this->newSpreadsheet();
275273
$spreadsheet->setValueBinder($this->valueBinder);
276274

277275
// Load into this instance

src/PhpSpreadsheet/Reader/Gnumeric.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,7 @@ private static function testSimpleXml(mixed $value): SimpleXMLElement
231231
*/
232232
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
233233
{
234-
// Create new Spreadsheet
235-
$spreadsheet = new Spreadsheet();
234+
$spreadsheet = $this->newSpreadsheet();
236235
$spreadsheet->setValueBinder($this->valueBinder);
237236
$spreadsheet->removeSheetByIndex(0);
238237

src/PhpSpreadsheet/Reader/Html.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,7 @@ private static function containsTags(string $data): bool
210210
*/
211211
public function loadSpreadsheetFromFile(string $filename): Spreadsheet
212212
{
213-
// Create new Spreadsheet
214-
$spreadsheet = new Spreadsheet();
213+
$spreadsheet = $this->newSpreadsheet();
215214
$spreadsheet->setValueBinder($this->valueBinder);
216215

217216
// Load into this instance
@@ -826,7 +825,7 @@ public function loadFromString(string $content, ?Spreadsheet $spreadsheet = null
826825
if ($loaded === false) {
827826
throw new Exception('Failed to load content as a DOM Document', 0, $e ?? null);
828827
}
829-
$spreadsheet = $spreadsheet ?? new Spreadsheet();
828+
$spreadsheet = $spreadsheet ?? $this->newSpreadsheet();
830829
$spreadsheet->setValueBinder($this->valueBinder);
831830
self::loadProperties($dom, $spreadsheet);
832831

@@ -1225,7 +1224,7 @@ private function setBorderStyle(Style $cellStyle, string $styleValue, string $ty
12251224
public function listWorksheetInfo(string $filename): array
12261225
{
12271226
$info = [];
1228-
$spreadsheet = new Spreadsheet();
1227+
$spreadsheet = $this->newSpreadsheet();
12291228
$this->loadIntoExisting($filename, $spreadsheet);
12301229
foreach ($spreadsheet->getAllSheets() as $sheet) {
12311230
$newEntry = ['worksheetName' => $sheet->getTitle()];

src/PhpSpreadsheet/Reader/Ods.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,7 @@ public function listWorksheetInfo(string $filename): array
229229
*/
230230
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
231231
{
232-
// Create new Spreadsheet
233-
$spreadsheet = new Spreadsheet();
232+
$spreadsheet = $this->newSpreadsheet();
234233
$spreadsheet->setValueBinder($this->valueBinder);
235234
$spreadsheet->removeSheetByIndex(0);
236235

src/PhpSpreadsheet/Reader/Slk.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,7 @@ public function listWorksheetInfo(string $filename): array
144144
*/
145145
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
146146
{
147-
// Create new Spreadsheet
148-
$spreadsheet = new Spreadsheet();
147+
$spreadsheet = $this->newSpreadsheet();
149148
$spreadsheet->setValueBinder($this->valueBinder);
150149

151150
// Load into this instance

src/PhpSpreadsheet/Reader/Xls/LoadSpreadsheet.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protected function loadSpreadsheetFromFile2(string $filename, Xls $xls): Spreads
2626
$xls->loadOLE($filename);
2727

2828
// Initialisations
29-
$xls->spreadsheet = new Spreadsheet();
29+
$xls->spreadsheet = $this->newSpreadsheet();
3030
$xls->spreadsheet->setValueBinder($this->valueBinder);
3131
$xls->spreadsheet->removeSheetByIndex(0); // remove 1st sheet
3232
if (!$xls->readDataOnly) {

src/PhpSpreadsheet/Reader/Xlsx.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
400400
File::assertFile($filename, self::INITIAL_FILE);
401401

402402
// Initialisations
403-
$excel = new Spreadsheet();
403+
$excel = $this->newSpreadsheet();
404404
$excel->setValueBinder($this->valueBinder);
405405
$excel->removeSheetByIndex(0);
406406
$addingFirstCellStyleXf = true;

src/PhpSpreadsheet/Reader/Xml.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,7 @@ public function listWorksheetInfo(string $filename): array
243243
*/
244244
public function loadSpreadsheetFromString(string $contents): Spreadsheet
245245
{
246-
// Create new Spreadsheet
247-
$spreadsheet = new Spreadsheet();
246+
$spreadsheet = $this->newSpreadsheet();
248247
$spreadsheet->setValueBinder($this->valueBinder);
249248
$spreadsheet->removeSheetByIndex(0);
250249

@@ -257,8 +256,7 @@ public function loadSpreadsheetFromString(string $contents): Spreadsheet
257256
*/
258257
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
259258
{
260-
// Create new Spreadsheet
261-
$spreadsheet = new Spreadsheet();
259+
$spreadsheet = $this->newSpreadsheet();
262260
$spreadsheet->setValueBinder($this->valueBinder);
263261
$spreadsheet->removeSheetByIndex(0);
264262

0 commit comments

Comments
 (0)