mirror of
https://github.com/moodle/moodle.git
synced 2025-06-02 06:05:31 +02:00
MDL-76800 lib: Adapt dataformat to OpenSpout 4.0 version.
This commit is contained in:
parent
3ddfaebd43
commit
ca2fd15a2a
@ -41,8 +41,6 @@ class writer extends \core\dataformat\spout_base {
|
||||
/** @var $extension */
|
||||
protected $extension = ".csv";
|
||||
|
||||
/** @var $spouttype */
|
||||
protected $spouttype = \OpenSpout\Common\Type::CSV;
|
||||
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
*
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user