kriss/data-export

PHP数据导出

v2.1.0 2024-08-13 10:50 UTC

This package is auto-updated.

Last update: 2024-09-13 11:02:06 UTC


README

Latest Version on Packagist Tests Total Downloads

封装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();

支持源

支持写入器

所有配置在DataExporter::writerConfig()中,请参阅Tests

您可以通过扩展DataExporter并添加自己的功能,请参阅Tests中的示例

常见问题解答

为什么使用box/spout

box/spout可以使用流写入xlsx,但phpoffice/phpspreadsheet不行。当写入大量数据时,phpoffice/phpspreadsheet会消耗大量内存,但box/spout则消耗很少!

何时使用GeneratorChainSourceIterator

当您需要处理大量源并将它们合并到一个写入操作中时。

如何构建样式

使用扩展,请参阅ExtendSpoutTestExtendSpreadsheetTest

如何写入多工作表

使用ExcelSheetSpreadsheetTrait,请参阅ExcelSheetSourceIteratorTest