PHPackages                             ronrademaker/exporter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ronrademaker/exporter

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ronrademaker/exporter
=====================

Library to export data in various input formats to various output formats.

0.1.0(10y ago)011MITPHP

Since Jan 11Pushed 10y agoCompare

[ Source](https://github.com/RonRademaker/Exporter)[ Packagist](https://packagist.org/packages/ronrademaker/exporter)[ RSS](/packages/ronrademaker-exporter/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

Exporter
========

[](#exporter)

Library to export data in various input formats to various output formats.

[![Coverage Status](https://camo.githubusercontent.com/7b11492a27cca493109f2f5d6c3707df0e49814bef73d1fab330f7d61a224793/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f526f6e526164656d616b65722f4578706f727465722f62616467652e7376673f6272616e63683d6d617374657226736572766963653d676974687562)](https://coveralls.io/github/RonRademaker/Exporter?branch=master)[![Build Status](https://camo.githubusercontent.com/45d87300e55ef829004409d7561e94613e8f157719eba510a1466d10347448b7/68747470733a2f2f7472617669732d63692e6f72672f526f6e526164656d616b65722f4578706f727465722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/RonRademaker/Exporter)[![SensioLabsInsight](https://camo.githubusercontent.com/03f6075010c663dd1799ae378b79ad006094b2cf8ad8f0c36dd8db52ca2af99d/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f39336535373631322d343666632d343032622d623333392d6637333364643238346431302f6d696e692e706e67)](https://insight.sensiolabs.com/projects/93e57612-46fc-402b-b339-f733dd284d10)

Installation
============

[](#installation)

```
composer require ronrademaker/exporter
```

Usage
=====

[](#usage)

Output an array to CSV in a file
--------------------------------

[](#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
---------------------------------

[](#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
------------------------

[](#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
--------------

[](#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
=================================

[](#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);
```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3777d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/32c77f5ff7ffcce6bdf072dd76718e014643cb4b3083b27ecf1806606a5ce363?d=identicon)[RonRademaker](/maintainers/RonRademaker)

---

Top Contributors

[![RonRademaker](https://avatars.githubusercontent.com/u/2697738?v=4)](https://github.com/RonRademaker "RonRademaker (33 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ronrademaker-exporter/health.svg)

```
[![Health](https://phpackages.com/badges/ronrademaker-exporter/health.svg)](https://phpackages.com/packages/ronrademaker-exporter)
```

###  Alternatives

[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

22.8k69.3k](/packages/grumpydictator-firefly-iii)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k20](/packages/civicrm-civicrm-core)[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

4.8k4.3k](/packages/shlinkio-shlink)[craftcms/feed-me

Import content from XML, RSS, CSV or JSON feeds into entries, categories, Craft Commerce products, and more.

292927.5k22](/packages/craftcms-feed-me)[troydavisson/phrets

RETS library in PHP

463355.6k](/packages/troydavisson-phrets)[firefly-iii/data-importer

Firefly III Data Import Tool.

7545.8k](/packages/firefly-iii-data-importer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
