Viewing file: Reader.php (1.82 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
declare(strict_types=1);
namespace OpenSpout\Reader\ODS;
use OpenSpout\Common\Exception\IOException; use OpenSpout\Common\Helper\Escaper\ODS; use OpenSpout\Reader\AbstractReader; use OpenSpout\Reader\Exception\NoSheetsFoundException; use OpenSpout\Reader\ODS\Helper\SettingsHelper; use ZipArchive;
/** * @extends AbstractReader<SheetIterator> */ final class Reader extends AbstractReader { private ZipArchive $zip;
private readonly Options $options;
/** @var SheetIterator To iterator over the ODS sheets */ private SheetIterator $sheetIterator;
public function __construct(?Options $options = null) { $this->options = $options ?? new Options(); }
public function getSheetIterator(): SheetIterator { $this->ensureStreamOpened();
return $this->sheetIterator; }
/** * Returns whether stream wrappers are supported. */ protected function doesSupportStreamWrapper(): bool { return false; }
/** * Opens the file at the given file path to make it ready to be read. * * @param string $filePath Path of the file to be read * * @throws IOException If the file at the given path or its content cannot be read * @throws NoSheetsFoundException If there are no sheets in the file */ protected function openReader(string $filePath): void { $this->zip = new ZipArchive();
if (true !== $this->zip->open($filePath)) { throw new IOException("Could not open {$filePath} for reading."); }
$this->sheetIterator = new SheetIterator($filePath, $this->options, new ODS(), new SettingsHelper()); }
/** * Closes the reader. To be used after reading the file. */ protected function closeReader(): void { $this->zip->close(); } }
|