quorum / exporter
将数据导出为电子表格
v0.2.0
2023-05-07 13:28 UTC
Requires
- php: >=7.4
- ext-dom: *
- ext-json: *
- ext-mbstring: *
- ext-spl: *
- maennchen/zipstream-php: ~2.1
Requires (Dev)
- corpus/coding-standard: ^0.4.0
- donatj/drop: *
- donatj/mddoc: ^0.7.0
- friendsofphp/php-cs-fixer: ^3.16
- phpunit/phpunit: 4.* | ~8.5 | ^9.0
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-12 02:50:45 UTC
README
流式数据导出工具
支持的格式
- CSV / TSV
- SpreadsheetML "Excel 2004 XML Spreadsheet"
- 更多即将到来。
要求
- maennchen/zipstream-php: ~2.1
- ext-SPL: *
- ext-mbstring: *
- ext-dom: *
- ext-json: *
- php: >=7.4
安装
使用以下命令安装最新版本
composer require 'quorum/exporter'
示例
简单CSV导出
<?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();
文档
类:\Quorum\Exporter\DataExport
方法:DataExport->__construct
function __construct(\Quorum\Exporter\EngineInterface $engine)
DataExport对象用于协调导出过程,无论导出格式如何。
参数
- \Quorum\Exporter\EngineInterface
$engine
- 用于导出数据表的引擎。
方法:DataExport->addSheet
function addSheet(\Quorum\Exporter\DataSheet $sheet [, ?string $sheetTitle = null]) : void
向导出添加数据表。
参数
- \Quorum\Exporter\DataSheet
$sheet
- 要添加到导出的DataSheet - string | null
$sheetTitle
- 可选的标题,用于数据导出。大多数引擎将解释为文件名(不含文件扩展名)。如果不包含,则名称将留给引擎。
方法:DataExport->export
function export([ $outputStream = null]) : void
触发最终导出过程。
参数
- resource | null
$outputStream
- 要导出的流资源。NULL将打开php://output资源。
类:\Quorum\Exporter\DataSheet
方法:DataSheet->__construct
function __construct([ ?string $name = null])
DataSheet是工作表的表示
参数
- string | null
$name
- 要给工作表的名字。使用方式取决于引擎实现,可能是文件名或工作表名
方法:DataSheet->getName
function getName() : ?string
获取工作表的名称。使用方式取决于引擎
方法:DataSheet->addRow
function addRow(array $row) : void
将一行数据追加到工作表末尾。
参数
- array
$row
- 一组标量。
抛出: \Quorum\Exporter\Exceptions\InvalidDataTypeException
方法:DataSheet->addRows
function addRows($dataSet) : void
将多行数据追加到工作表末尾。
参数
- array | \Iterator
$dataSet
- 一个由数组标量组成的可迭代对象。
方法:DataSheet->current
function current() : ?array
返回当前值
方法:DataSheet->next
function next() : void
向前移动到下一个元素
方法:DataSheet->key
function key() : int
返回当前元素的键
方法:DataSheet->valid
function valid() : bool
检查当前位置是否有效
方法:DataSheet->rewind
function rewind() : void
将迭代器重置到第一个元素
类:\Quorum\Exporter\EngineInterface
类:\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'; }
方法:CsvEngine->__construct
function __construct([ string $outputEncoding = self::UTF16LE [, ?string $delimiter = null [, string $enclosure = '"' [, string $inputEncoding = self::UTF8]]]])
默认且强烈推荐的CSV导出格式,UTF-16LE,带有前导字节顺序标记。
虽然这看起来有些奇怪,但这样做的原因是为了与跨平台Microsoft Excel兼容。
您可以在这里了解更多关于这个主题的信息
参数
- string
$outputEncoding
- 输出编码。默认为UTF-16LE,因为它是Excel支持得最好的编码 - string | null
$delimiter
- 用于分隔符的字符。默认值取决于编码。 - string
$enclosure
- 用于封装的字符。 - 字符串
$inputEncoding
- 输入CSV文件的编码。
方法: CsvEngine->setEnclosure
function setEnclosure(string $enclosure) : void
用作CSV值封装的字符。通常这将是 "
方法: CsvEngine->setTmpDir
function setTmpDir(string $tmpDir) : void
设置临时目录以写入临时文件。
默认为 sys_get_temp_dir
方法: CsvEngine->getMultiSheetStrategy
function getMultiSheetStrategy() : string
获取当前的多工作表导出策略。
方法: CsvEngine->setMultiSheetStrategy
function setMultiSheetStrategy(string $multiSheetStrategy) : void
设置允许多个工作表的策略。
支持的策略是 CsvEngine::STRATEGY_ZIP
和 CsvEngine::STRATEGY_CONCAT
CsvEngine::STRATEGY_ZIP
将输出一个包含每个工作表作为单独CSV文件的单个ZIP文件。CsvEngine::STRATEGY_CONCAT
将输出一个包含每个工作表连续排列的单个CSV文件。
参数
- 字符串
$multiSheetStrategy
- 使用常量CsvEngine::STRATEGY_ZIP
或CsvEngine::STRATEGY_CONCAT
方法: CsvEngine->getDelimiter
function getDelimiter() : string
获取分隔符。如果未设置,UTF-16和UTF-32默认为TAB "\t",其他为COMMA ","
方法: CsvEngine->setDelimiter
function setDelimiter(?string $delimiter) : void
设置分隔符。设置为NULL将触发基于推荐编码规则的自动分隔符决策。
参数
- 字符串 | null
$delimiter
- 分隔符字符。必须为单字节。
方法: CsvEngine->getEnclosure
function getEnclosure() : string
获取当前用作封装的字符。
方法: CsvEngine->disableBom
function disableBom([ bool $disable = true]) : void
是否禁用给定编码的起始字节顺序标记(BOM)的输出。
类: \Quorum\Exporter\Engines\SpreadsheetMLEngine
方法: SpreadsheetMLEngine->setCreatedTime
function setCreatedTime(?int $createdTime) : void
参数
- 整型 | null
$createdTime
- 要使用的创建时间戳。如果为null,则使用当前时间。