ronrademaker / exporter
Library to export data in various input formats to various output formats.
0.1.0
2016-01-11 12:22 UTC
Requires
- league/csv: ^8.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-10-29 04:31:08 UTC
README
Library to export data in various input formats to various output formats.
Installation
composer require ronrademaker/exporter
Usage
Output an array to CSV in a file
$someArray = [ ['foo' => 'foo', 'bar' => 'bar'], ['foo' => 'foobar', 'bar' => 'baz'], ['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz'], ['foo' => 'bar', 'baz' => 'bar'], ['foo' => 'baz', 'bar' => 'foobar'], ]; $data = new ArrayData($someArray); $fileOption = new FileOption($outputFile); $exporter = new CSVExporter(); $exporter->export($data, [$fileOption]);
or
$someArray = [ ['foo' => 'foo', 'bar' => 'bar'], ['foo' => 'foobar', 'bar' => 'baz'], ['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz'], ['foo' => 'bar', 'baz' => 'bar'], ['foo' => 'baz', 'bar' => 'foobar'], ]; $data = new ArrayData($someArray); $fileOption = new FileOption($outputFile); $exporter = new CSVExporter(); $exporter->setOption($fileOption); $exporter->setInput($data); $exporter->export();
Add headers to control output CSV
Only baz
and foo
will be in the resulting CSV and the order of the columns will be as set in the HeadersOption.
$someArray = [ ['foo' => 'foo', 'bar' => 'bar'], ['foo' => 'foobar', 'bar' => 'baz'], ['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz'], ['foo' => 'bar', 'baz' => 'bar'], ['foo' => 'baz', 'bar' => 'foobar'], ]; $outputFile = 'output.csv'; $headers = new HeadersOption(['baz', 'foo']); $data = new ArrayData($someArray); $fileOption = new FileOption($outputFile); $exporter = new CSVExporter(); $exporter->export($data, [$headersOption, $fileOption]);
Output to multiple files
$someArray = [ ['foo' => 'foo', 'bar' => 'bar'], ['foo' => 'foobar', 'bar' => 'baz'], ['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz'], ['foo' => 'bar', 'baz' => 'bar'], ['foo' => 'baz', 'bar' => 'foobar'], ]; $outputFile = 'output.csv'; $otherFile = sprintf('/data/dropbox/output-%s.csv', date('Ymd')); $headers = new HeadersOption(['baz', 'foo']); $data = new ArrayData($someArray); $options = [ $headers, new FileOption($outputFile), new FileOption($otherFile), ]; $exporter = new CSVExporter(); $exporter->export($data, $options);
Error Handling
$someArray = [ ['foo' => 'foo', 'bar' => 'bar', ['impossible' => 'input']], ['foo' => 'foobar', 'bar' => 'baz'], ['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz'], ['foo' => 'bar', 'baz' => 'bar'], ['foo' => 'baz', 'bar' => 'foobar'], ]; $outputFile = 'output.csv'; $otherFile = sprintf('/data/dropbox/output-%s.csv', date('Ymd')); $headers = new HeadersOption(['baz', 'foo']); $data = new ArrayData($someArray); $options = [ $headers, new FileOption($outputFile), new FileOption($otherFile), ]; try { $exporter = new CSVExporter(); $exporter->export($data, $options); } catch (UnsupportedDataException $e) { echo sprintf('The given input is not valid: %s', $e->getMessage()); }
Exporting multiple, similar input
$someArray = [ ['foo' => 'foo', 'bar' => 'bar'], ['foo' => 'foobar', 'bar' => 'baz'], ['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz'], ['foo' => 'bar', 'baz' => 'bar'], ['foo' => 'baz', 'bar' => 'foobar'], ]; $somePluralArray = [ ['foo' => 'foos', 'bar' => 'bars'], ['foo' => 'foobars', 'bar' => 'bazs'], ['foo' => 'foos', 'bar' => 'bars', 'baz' => 'bazs'], ['foo' => 'bars', 'baz' => 'bars'], ['foo' => 'bazs', 'bar' => 'foobars'], ]; $headers = new HeadersOption(['baz', 'foo']); $exporter = new CSVExporter([$headers]); $outputFileOption = new FileOption('output.csv'); $outputPluralFileOption = new FileOption('outputs.csv'); $inputData = new ArrayData($someArray); $inputPluralData = new ArrayData($somePlurarData); $exporter->setOption($outputFileOption, true); $exporter->export($inputData); $exporter->setOption($outputPluralFileOption, true); $exporter->export($inputPluralData);