2017 © Pedro Peláez
 

library exporter

Export Data as Spreadsheets

image

quorum/exporter

Export Data as Spreadsheets

  • Friday, September 29, 2017
  • by donatj
  • Repository
  • 3 Watchers
  • 1 Stars
  • 23,687 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 9 % Grown

The README.md

Exporter

Latest Stable Version Total Downloads License ci.yml, (*1)

A Streamed Data Export Tool, (*2)

Supported formats: - CSV / TSV - SpreadsheetML "Excel 2004 XML Spreadsheet" - More to come., (*3)

Requirements

  • maennchen/zipstream-php: ~2.1
  • ext-SPL: *
  • ext-mbstring: *
  • ext-dom: *
  • ext-json: *
  • php: >=7.4

Installing

Install the latest version with:, (*4)

composer require 'quorum/exporter'

Example

Simple CSV Export

<?php

use Quorum\Exporter\DataExport;
use Quorum\Exporter\DataSheet;
use Quorum\Exporter\Engines\CsvEngine;

require __DIR__ . '/../vendor/autoload.php';

$csv      = new CsvEngine;
$exporter = new DataExport($csv);

// Output a ZIP of CSV's for Multiple Sheets
$csv->setMultiSheetStrategy(CsvEngine::STRATEGY_ZIP);

$sheetA = new DataSheet('a');
$sheetB = new DataSheet('b');

$exporter->addSheet($sheetA);
$exporter->addSheet($sheetB);

// Add a single row at a time;
$sheetA->addRow([ 1, 2, 3 ]);
$sheetA->addRow([ "a", "b", "c" ]);

// Add Multiple Rows
$sheetB->addRows([
    [ 4, 5, 6 ],
    [ 7, 8, 9 ],
]);

$exporter->export();

Documentation

Class: \Quorum\Exporter\DataExport

Method: DataExport->__construct

function __construct(\Quorum\Exporter\EngineInterface $engine)

DataExport is the object used to orchestrate the export process regardless of export format., (*5)

Parameters:
  • \Quorum\Exporter\EngineInterface $engine - The engine by which to export the data sheets.

Method: DataExport->addSheet

function addSheet(\Quorum\Exporter\DataSheet $sheet [, ?string $sheetTitle = null]) : void

Add a Data Sheet to the export., (*6)

Parameters:
  • \Quorum\Exporter\DataSheet $sheet - The DataSheet to add to the export
  • string | null $sheetTitle - Optional Title to give the data export. Most Engines will interpret this as filename (sans file extension). If excluded, the name will be left to the engine.

Method: DataExport->export

function export([ $outputStream = null]) : void

Trigger the final export process., (*7)

Parameters:
  • resource | null $outputStream - The stream resource to export to. NULL will open a php://output resource.

Class: \Quorum\Exporter\DataSheet

Method: DataSheet->__construct

function __construct([ ?string $name = null])

DataSheet is the representation of a Worksheet, (*8)

Parameters:
  • string | null $name - The name to give the sheet. The use is Engine implementation specific but is likely filename or Sheet name

Method: DataSheet->getName

function getName() : ?string

Get the name of the sheet. Use thereof is Engine Specific, (*9)


Method: DataSheet->addRow

function addRow(array $row) : void

Append a row worth of data to the end of the Worksheet., (*10)

Parameters:
  • array $row - An array of scalars.

Throws: \Quorum\Exporter\Exceptions\InvalidDataTypeException, (*11)


Method: DataSheet->addRows

function addRows($dataSet) : void

Append multiple rows of data to the end of the Worksheet., (*12)

Parameters:
  • array | \Iterator $dataSet - An iterable of arrays of scalars.

Method: DataSheet->current

function current() : ?array

Return the current value, (*13)


Method: DataSheet->next

function next() : void

Move forward to next element, (*14)


Method: DataSheet->key

function key() : int

Return the key of the current element, (*15)


Method: DataSheet->valid

function valid() : bool

Checks if current position is valid, (*16)


Method: DataSheet->rewind

function rewind() : void

Rewind the Iterator to the first element, (*17)

Class: \Quorum\Exporter\EngineInterface

Class: \Quorum\Exporter\Engines\CsvEngine

<?php
namespace Quorum\Exporter\Engines;

class CsvEngine {
    public const STRATEGY_CONCAT = 'stat-concat';
    public const STRATEGY_ZIP = 'stat-zip';
    public const UTF8 = 'UTF-8';
    public const UTF16 = 'UTF-16';
    public const UTF16BE = 'UTF-16BE';
    public const UTF16LE = 'UTF-16LE';
    public const UTF32 = 'UTF-32';
    public const UTF32BE = 'UTF-32BE';
    public const UTF32LE = 'UTF-32LE';
}

Method: CsvEngine->__construct

function __construct([ string $outputEncoding = self::UTF16LE [, ?string $delimiter = null [, string $enclosure = '"' [, string $inputEncoding = self::UTF8]]]])

The default and highly recommended export format for CSV tab delimited UTF-16LE with leading Byte Order Mark., (*18)

While this may seem like an odd choice, the reason for this is cross platform Microsoft Excel compatibility., (*19)

You can read more on the topic here
  • https://donatstudios.com/CSV-An-Encoding-Nightmare
Parameters:
  • string $outputEncoding - The encoding to output. Defaults to UTF-16LE as it is by far the best supported by Excel
  • string | null $delimiter - Character to use as Delimiter. Default varies based on encoding.
  • string $enclosure - Character to use as Enclosure.
  • string $inputEncoding - The encoding of the input going into the CSVs.

Method: CsvEngine->setEnclosure

function setEnclosure(string $enclosure) : void

Character to use as CSV value enclosure. Commonly this will be ", (*20)


Method: CsvEngine->setTmpDir

function setTmpDir(string $tmpDir) : void

Set the tmpDir to write interim files to., (*21)

Defaults to sys_get_temp_dir, (*22)


Method: CsvEngine->getMultiSheetStrategy

function getMultiSheetStrategy() : string

Get the current strategy for Multi-Sheet export, (*23)


Method: CsvEngine->setMultiSheetStrategy

function setMultiSheetStrategy(string $multiSheetStrategy) : void

Set the strategy for allowing multiple sheets., (*24)

Supported strategies are CsvEngine::STRATEGY_ZIP and CsvEngine::STRATEGY_CONCAT, (*25)

  • CsvEngine::STRATEGY_ZIP will output a single zipfile containing every sheet as a separate CSV file.
  • CsvEngine::STRATEGY_CONCAT will output a single CSV file with every sheet one after the next.
Parameters:
  • string $multiSheetStrategy - Use the constant CsvEngine::STRATEGY_ZIP or CsvEngine::STRATEGY_CONCAT

Method: CsvEngine->getDelimiter

function getDelimiter() : string

Gets delimiter. If unset, UTF-16 and UTF-32 default to TAB "\t", everything else to COMMA ",", (*26)


Method: CsvEngine->setDelimiter

function setDelimiter(?string $delimiter) : void

Sets delimiter. Setting to NULL triggers automatic delimiter decision based on recommended encoding rules., (*27)

Parameters:
  • string | null $delimiter - Delimiter Character. Must be a single byte.

Method: CsvEngine->getEnclosure

function getEnclosure() : string

Get the current character used for enclosure., (*28)


Method: CsvEngine->disableBom

function disableBom([ bool $disable = true]) : void

Whether to disable the leading Byte Order Mark for the given encoding from being output., (*29)

Class: \Quorum\Exporter\Engines\SpreadsheetMLEngine


Method: SpreadsheetMLEngine->setCreatedTime

function setCreatedTime(?int $createdTime) : void
Parameters:
  • int | null $createdTime - The timestamp to use for the created time. If null, the current time will be used.

Class: \Quorum\Exporter\Exceptions\ExportException

Class: \Quorum\Exporter\Exceptions\InvalidDataTypeException

Class: \Quorum\Exporter\Exceptions\OutputException

Class: \Quorum\Exporter\Exceptions\WritableException

The Versions

29/09 2017

dev-master

9999999-dev

Export Data as Spreadsheets

  Sources   Download

MIT

The Requires

 

The Development Requires

30/05 2017

v0.0.4

0.0.4.0

Export Data as Spreadsheets

  Sources   Download

MIT

The Requires

 

The Development Requires

09/03 2015

v0.0.3

0.0.3.0

Export Data as Spreadsheets

  Sources   Download

MIT

The Requires

 

The Development Requires

05/03 2015

v0.0.2

0.0.2.0

Export Data as Spreadsheets

  Sources   Download

MIT

The Requires

 

The Development Requires

06/02 2015

v0.0.1

0.0.1.0

Export Data as Spreadsheets

  Sources   Download

MIT

The Requires

 

The Development Requires