jdz/importer

Spreadsheet import (xlsx / csv / ods) on top of PhpSpreadsheet

Maintainers

Package info

github.com/joffreydemetz/importer

Homepage

pkg:composer/jdz/importer

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-08-06 11:57 UTC

This package is auto-updated.

Last update: 2026-08-06 12:38:20 UTC


README

Spreadsheet import (xlsx / csv / ods) built on PhpSpreadsheet.

Reads the active worksheet of an uploaded file into an array of field-keyed rows. The first row is the header, and each value is coerced to its column type (string / int / bool / url / date).

use JDZ\Importer\Importer;

$rows = (new Importer())->parse('/tmp/upload.xlsx');
// [ ['name' => 'Doe', 'email' => 'doe@example.com'], … ]

Header labels become the field names by default. Subclass getColumns() to map the sheet onto your own fields and types:

class MembersImporter extends Importer
{
    protected function getColumns(): array
    {
        return [
            (object)['field' => 'name'],
            (object)['field' => 'active',  'type' => 'bool',  'default' => 0],
            (object)['field' => 'website', 'type' => 'url'],
            (object)['field' => 'joined',  'type' => 'date'],
        ];
    }
}

Coercions: bool reads 1 or X (yields 1/0), url forces https://, date normalizes dd/mm/yyyy and dd-mm-yyyy to Y-m-d (anything unparseable becomes an empty string).

Install

composer require jdz/importer

Tests

composer test