PHPackages                             we/spreadsheetimport - 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. we/spreadsheetimport

ActiveTypo3-flow-package[Utility &amp; Helpers](/categories/utility)

we/spreadsheetimport
====================

A Flow package to import spreadsheet records into configurable domain objects

22571[1 PRs](https://github.com/webessentials/WE.SpreadsheetImport/pulls)PHP

Since Sep 25Pushed 6y ago11 watchersCompare

[ Source](https://github.com/webessentials/WE.SpreadsheetImport)[ Packagist](https://packagist.org/packages/we/spreadsheetimport)[ RSS](/packages/we-spreadsheetimport/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

A Flow package to import spreadsheet records into configurable domain objects.

Domain Model Configuration
--------------------------

[](#domain-model-configuration)

### Settings

[](#settings)

The package supports the import of different domain models. Each one needs to be configured in the setting files. A specific configuration is also referred to as 'Context'.

Minimum configuration example 'default' context:

```
WE:
  SpreadsheetImport:
    default:
      domain: WE\Sample\Domain\Model\User
      arguments: ~

```

### Mapping by Annotations

[](#mapping-by-annotations)

The domain model properties to be imported are specified by the `Mapping` annotation and can then be mapped to a column in the spreadsheet.

A simple property is specified the following way:

```
/**
 * @var string
 * @SpreadsheetImport\Mapping
 */
$firstName

```

`Mapping` supports properties to specify further configurations such as modified getters/setters, label, and the definition for identifiers. See the `WE\SpreadsheetImport\Annotations\Mapping` class for your reference.

### Argument Values

[](#argument-values)

Besides the values that are imported from the spreadsheet, fix values are specified by parameter or statically in the settings. Example:

```
arguments:
- { name: category, domain: 'WE\Sample\Domain\Model\UserCategory', identifier: TRUE }
- { name: comment, static: 'Sample import' }

```

The argument 'category' expects a `UserCategory` object passed as parameter. It will be set to the object by `setCategory(..)`. Further, this value is used as identifier in the same way as the identifier property in the Mapping annotation. The argument 'comment' has a static value and will simply call the `UserCategory::setComment('Sample import')`.

Usage
-----

[](#usage)

### Technical

[](#technical)

Per import, a specific `\WE\SpreadsheetImport\Domain\Model\SpreadsheetImport` object needs to be created, which then can be processed by the `SpreadsheetImportService::import()` function. The object contains the column mapping between domain model and spreadsheet columns.

How the `SpreadsheetImport` object is created and progressed by the import function my vary per implementation and can easily be modified. The process implemented within this package works as a sample scenario but can be used out of the box with the simple configuration documented above.

### Sample Implementation

[](#sample-implementation)

1. Call the `newAction` of the `SpreadsheetImportController` to create new `SpreadsheetImport` object.
2. On the next step of the dialog, the mapping between the configured domain model mapping properties and the spreadsheet columns needs to be done.
3. An object mapping preview shows the applied mapping and has to be confirmed.
4. After confirmation, the import is scheduled to import.
5. The function `./flow spreadsheetimport:import` has to be called to process the import.

To use the sample implementation, the controller might be extended and the `context` property overwritten.

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b465deb7146e0950315de6455f720d4b1667772868165d36df9ec140d3f20f1e?d=identicon)[webessentials](/maintainers/webessentials)

---

Top Contributors

[![simstern](https://avatars.githubusercontent.com/u/2580285?v=4)](https://github.com/simstern "simstern (31 commits)")[![limchivy](https://avatars.githubusercontent.com/u/2150442?v=4)](https://github.com/limchivy "limchivy (22 commits)")[![chhengleap](https://avatars.githubusercontent.com/u/5187150?v=4)](https://github.com/chhengleap "chhengleap (10 commits)")[![visay](https://avatars.githubusercontent.com/u/679819?v=4)](https://github.com/visay "visay (1 commits)")

### Embed Badge

![Health badge](/badges/we-spreadsheetimport/health.svg)

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

PHPackages © 2026

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