Viewing file: BaseReader.php (5.17 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace PhpOffice\PhpSpreadsheet\Reader;
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException; use PhpOffice\PhpSpreadsheet\Reader\Exception as ReaderException; use PhpOffice\PhpSpreadsheet\Reader\Security\XmlScanner; use PhpOffice\PhpSpreadsheet\Shared\File; use PhpOffice\PhpSpreadsheet\Spreadsheet;
abstract class BaseReader implements IReader { /** * Read data only? * Identifies whether the Reader should only read data values for cells, and ignore any formatting information; * or whether it should read both data and formatting. * * @var bool */ protected $readDataOnly = false;
/** * Read empty cells? * Identifies whether the Reader should read data values for cells all cells, or should ignore cells containing * null value or empty string. * * @var bool */ protected $readEmptyCells = true;
/** * Read charts that are defined in the workbook? * Identifies whether the Reader should read the definitions for any charts that exist in the workbook;. * * @var bool */ protected $includeCharts = false;
/** * Restrict which sheets should be loaded? * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded. * * @var null|string[] */ protected $loadSheetsOnly;
/** * IReadFilter instance. * * @var IReadFilter */ protected $readFilter;
/** @var resource */ protected $fileHandle;
/** * @var ?XmlScanner */ protected $securityScanner;
public function __construct() { $this->readFilter = new DefaultReadFilter(); }
public function getReadDataOnly() { return $this->readDataOnly; }
public function setReadDataOnly($readCellValuesOnly) { $this->readDataOnly = (bool) $readCellValuesOnly;
return $this; }
public function getReadEmptyCells() { return $this->readEmptyCells; }
public function setReadEmptyCells($readEmptyCells) { $this->readEmptyCells = (bool) $readEmptyCells;
return $this; }
public function getIncludeCharts() { return $this->includeCharts; }
public function setIncludeCharts($includeCharts) { $this->includeCharts = (bool) $includeCharts;
return $this; }
public function getLoadSheetsOnly() { return $this->loadSheetsOnly; }
public function setLoadSheetsOnly($sheetList) { if ($sheetList === null) { return $this->setLoadAllSheets(); }
$this->loadSheetsOnly = is_array($sheetList) ? $sheetList : [$sheetList];
return $this; }
public function setLoadAllSheets() { $this->loadSheetsOnly = null;
return $this; }
public function getReadFilter() { return $this->readFilter; }
public function setReadFilter(IReadFilter $readFilter) { $this->readFilter = $readFilter;
return $this; }
public function getSecurityScanner(): ?XmlScanner { return $this->securityScanner; }
public function getSecurityScannerOrThrow(): XmlScanner { if ($this->securityScanner === null) { throw new ReaderException('Security scanner is unexpectedly null'); }
return $this->securityScanner; }
protected function processFlags(int $flags): void { if (((bool) ($flags & self::LOAD_WITH_CHARTS)) === true) { $this->setIncludeCharts(true); } if (((bool) ($flags & self::READ_DATA_ONLY)) === true) { $this->setReadDataOnly(true); } if (((bool) ($flags & self::SKIP_EMPTY_CELLS) || (bool) ($flags & self::IGNORE_EMPTY_CELLS)) === true) { $this->setReadEmptyCells(false); } }
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet { throw new PhpSpreadsheetException('Reader classes must implement their own loadSpreadsheetFromFile() method'); }
/** * Loads Spreadsheet from file. * * @param int $flags the optional second parameter flags may be used to identify specific elements * that should be loaded, but which won't be loaded by default, using these values: * IReader::LOAD_WITH_CHARTS - Include any charts that are defined in the loaded file */ public function load(string $filename, int $flags = 0): Spreadsheet { $this->processFlags($flags);
try { return $this->loadSpreadsheetFromFile($filename); } catch (ReaderException $e) { throw $e; } }
/** * Open file for reading. */ protected function openFile(string $filename): void { $fileHandle = false; if ($filename) { File::assertFile($filename);
// Open file $fileHandle = fopen($filename, 'rb'); } if ($fileHandle === false) { throw new ReaderException('Could not open file ' . $filename . ' for reading.'); }
$this->fileHandle = $fileHandle; } }
|