kriss / data-export
Data Export For 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
Wrap sonata-project/exporter, make it easy and strong~
Feature
- Simple api (use
DataExporter::csv()->saveAs()
) - Quick change for different output type (csv/xlsx/xls/ods...)
- Support a lot of source, and can use array or iterator quickly
- Low memory usage with huge data write (use csv/xlsxSpout)
- Low memory usage with chunk data fetch and write by chain (use GeneratorChainSourceIterator)
- Support
saveAs()
andbrowserDownload()
- Support do something in writing (use ObjectEvent)
- Support control Spreadsheet and Spout Instance, for change style and others (use Extend)
- Support Excel multi sheet write (use ExcelSheetSourceIterator)
- Support Dynamic source (use CallableSourceIterator)
Installation
You can install the package via composer:
composer require kriss/data-export
Usage
simple Example
use \Kriss\DataExporter\DataExporter; $source = [ ['aaa', 'bbb', 'ccc'], ['aaa', 'bbb', 'ccc'], ['aaa', 'bbb', 'ccc'], ]; DataExporter::csv($source, ['showHeaders' => false])->saveAs();
Support Source
- all source defined in sonata-project/exporter
- Simple source, Example in Tests
- GeneratorChainSourceIterator, Example in Tests
- ExcelSheetSourceIterator, Example in Tests
- CallableSourceIterator, Example in Tests
Support Writer
All Config in DataExporter::writerConfig()
, see Tests
You can extend DataExporter and add Yours, see Example in Tests
FAQ
Why box/spout Use
box/spout
can write xlsx use stream, but phpoffice/phpspreadsheet
not.
phpoffice/phpspreadsheet
use lots of memory when write huge data, but box/spout
use few!
When use
GeneratorChainSourceIterator
When you should handle huge source and need to merge them in one write.
How to build style
Use extension, see ExtendSpoutTest or ExtendSpreadsheetTest
How to write multi sheet
Use ExcelSheetSpreadsheetTrait, see ExcelSheetSourceIteratorTest