MDL-76800 lib: Adapt dataformat to OpenSpout 4.0 version.

This commit is contained in:
raortegar 2023-03-24 15:43:54 +01:00
parent 3ddfaebd43
commit ca2fd15a2a
6 changed files with 19 additions and 22 deletions

View File

@ -41,8 +41,6 @@ class writer extends \core\dataformat\spout_base {
/** @var $extension */
protected $extension = ".csv";
/** @var $spouttype */
protected $spouttype = \OpenSpout\Common\Type::CSV;
}

View File

@ -41,8 +41,6 @@ class writer extends \core\dataformat\spout_base {
/** @var $extension */
protected $extension = ".xlsx";
/** @var $spouttype */
protected $spouttype = \OpenSpout\Common\Type::XLSX;
/**
* Set the title of the worksheet inside a spreadsheet

View File

@ -58,7 +58,7 @@ class writer_test extends \advanced_testcase {
$handle = fopen($file, "w");
fwrite($handle, $content);
/** @var \OpenSpout\Reader\XLSX\Reader $reader */
$reader = \OpenSpout\Reader\Common\Creator\ReaderFactory::createFromType(\OpenSpout\Common\Type::XLSX);
$reader = \OpenSpout\Reader\Common\Creator\ReaderFactory::createFromFileByMimeType($file);
$reader->open($file);
/** @var \OpenSpout\Reader\XLSX\Sheet[] $sheets */

View File

@ -41,9 +41,6 @@ class writer extends \core\dataformat\spout_base {
/** @var $extension */
protected $extension = ".ods";
/** @var $spouttype */
protected $spouttype = \OpenSpout\Common\Type::ODS;
/**
* Set the title of the worksheet inside a spreadsheet
*

View File

@ -55,10 +55,11 @@ class writer_test extends \advanced_testcase {
* @throws \OpenSpout\Reader\Exception\ReaderNotOpenedException
*/
private function get_ods_rows_content($content) {
$reader = \OpenSpout\Reader\Common\Creator\ReaderFactory::createFromType(\OpenSpout\Common\Type::ODS);
$file = tempnam(sys_get_temp_dir(), 'ods_');
$handle = fopen($file, "w");
fwrite($handle, $content);
/** @var \OpenSpout\Reader\ODS\Reader $reader */
$reader = \OpenSpout\Reader\Common\Creator\ReaderFactory::createFromFileByMimeType($file);
$reader->open($file);
/** @var \OpenSpout\Reader\ODS\Sheet[] $sheets */
$sheets = $reader->getSheetIterator();

View File

@ -25,6 +25,9 @@
namespace core\dataformat;
use OpenSpout\Common\Entity\Row;
use OpenSpout\Writer\Common\Creator\WriterFactory;
/**
* Common Spout class for dataformat.
*
@ -35,9 +38,6 @@ namespace core\dataformat;
*/
abstract class spout_base extends \core\dataformat\base {
/** @var $spouttype */
protected $spouttype = '';
/** @var $writer */
protected $writer;
@ -51,11 +51,13 @@ abstract class spout_base extends \core\dataformat\base {
* Output file headers to initialise the download of the file.
*/
public function send_http_headers() {
$this->writer = \OpenSpout\Writer\Common\Creator\WriterEntityFactory::createWriter($this->spouttype);
if (method_exists($this->writer, 'setTempFolder')) {
$this->writer->setTempFolder(make_request_directory());
}
$filename = $this->filename . $this->get_extension();
$this->writer = WriterFactory::createFromFile($filename);
if (method_exists($this->writer->getOptions(), 'setTempFolder')) {
$this->writer->getOptions()->setTempFolder(make_request_directory());
}
if (PHPUNIT_TEST) {
$this->writer->openToFile('php://output');
} else {
@ -70,9 +72,9 @@ abstract class spout_base extends \core\dataformat\base {
* Set the dataformat to be output to current file
*/
public function start_output_to_file(): void {
$this->writer = \OpenSpout\Writer\Common\Creator\WriterEntityFactory::createWriter($this->spouttype);
if (method_exists($this->writer, 'setTempFolder')) {
$this->writer->setTempFolder(make_request_directory());
$this->writer = WriterFactory::createFromFile($this->filepath);
if (method_exists($this->writer->getOptions(), 'setTempFolder')) {
$this->writer->getOptions()->setTempFolder(make_request_directory());
}
$this->writer->openToFile($this->filepath);
@ -100,7 +102,7 @@ abstract class spout_base extends \core\dataformat\base {
* @param array $columns
*/
public function start_sheet($columns) {
if ($this->sheettitle && $this->writer instanceof \OpenSpout\Writer\WriterMultiSheetsAbstract) {
if ($this->sheettitle && $this->writer instanceof \OpenSpout\Writer\AbstractWriterMultiSheets) {
if ($this->renamecurrentsheet) {
$sheet = $this->writer->getCurrentSheet();
$this->renamecurrentsheet = false;
@ -109,7 +111,8 @@ abstract class spout_base extends \core\dataformat\base {
}
$sheet->setName($this->sheettitle);
}
$row = \OpenSpout\Writer\Common\Creator\WriterEntityFactory::createRowFromArray((array)$columns);
// Create a row with cells and apply the style to all cells.
$row = Row::fromValues((array)$columns);
$this->writer->addRow($row);
}
@ -120,7 +123,7 @@ abstract class spout_base extends \core\dataformat\base {
* @param int $rownum
*/
public function write_record($record, $rownum) {
$row = \OpenSpout\Writer\Common\Creator\WriterEntityFactory::createRowFromArray($this->format_record($record));
$row = Row::fromValues($this->format_record($record));
$this->writer->addRow($row);
}