kriss / data-export
PHP数据导出
v2.1.0
2024-08-13 10:50 UTC
Requires
- php: ^8.1
- illuminate/container: >=9
- sonata-project/exporter: ^3.3
- symfony/filesystem: >=5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.51
- illuminate/support: >=9
- openspout/openspout: ^4.23
- pestphp/pest: ^1.20
- phpoffice/phpspreadsheet: ^1.0|^2.0
- symfony/http-foundation: >=5
Suggests
- box/spout: export xlsxSpout
- openspout/openspout: box/spout replacer
- phpoffice/phpspreadsheet: export xlsx
README
封装sonata-project/exporter,使其简单而强大~
特性
- 简单的API(使用
DataExporter::csv()->saveAs()
) - 快速更改不同的输出类型(csv/xlsx/xls/ods...)
- 支持大量源,可以快速使用数组或迭代器
- 使用csv/xlsxSpout进行大量数据写入时的低内存使用
- 使用链式数据获取和写入(使用GeneratorChainSourceIterator)时的低内存使用
- 支持
saveAs()
和browserDownload()
- 支持在写入时执行某些操作(使用ObjectEvent)
- 支持控制电子表格和Spout实例,以更改样式和其他功能(使用Extend)
- 支持Excel多工作表写入(使用ExcelSheetSourceIterator)
- 支持动态源(使用CallableSourceIterator)
安装
您可以通过composer安装此包
composer require kriss/data-export
用法
简单示例
use \Kriss\DataExporter\DataExporter; $source = [ ['aaa', 'bbb', 'ccc'], ['aaa', 'bbb', 'ccc'], ['aaa', 'bbb', 'ccc'], ]; DataExporter::csv($source, ['showHeaders' => false])->saveAs();
支持源
- 所有源都在sonata-project/exporter中定义
- 简单源,示例在Tests
- GeneratorChainSourceIterator,示例在Tests
- ExcelSheetSourceIterator,示例在Tests
- CallableSourceIterator,示例在Tests
支持写入器
所有配置在DataExporter::writerConfig()
中,请参阅Tests
您可以通过扩展DataExporter并添加自己的功能,请参阅Tests中的示例
常见问题解答
为什么使用box/spout
box/spout
可以使用流写入xlsx,但phpoffice/phpspreadsheet
不行。当写入大量数据时,phpoffice/phpspreadsheet
会消耗大量内存,但box/spout
则消耗很少!
何时使用
GeneratorChainSourceIterator
当您需要处理大量源并将它们合并到一个写入操作中时。
如何构建样式
使用扩展,请参阅ExtendSpoutTest或ExtendSpreadsheetTest
如何写入多工作表
使用ExcelSheetSpreadsheetTrait,请参阅ExcelSheetSourceIteratorTest