PHPackages                             syspons/laravel-sheetable - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. syspons/laravel-sheetable

ActiveLibrary[File &amp; Storage](/categories/file-storage)

syspons/laravel-sheetable
=========================

Laravel Helper for spreadsheet im-/export

3.1.6(2y ago)01.0kMITPHP

Since Jan 3Pushed 1y agoCompare

[ Source](https://github.com/syspons-dev/laravel-sheetable)[ Packagist](https://packagist.org/packages/syspons/laravel-sheetable)[ RSS](/packages/syspons-laravel-sheetable/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (9)Versions (48)Used By (0)

Laravel-Sheetable
=================

[](#laravel-sheetable)

A helper for importing and exporting Eloquent models.

Easily add import + export routes + controllers by adding a Trait to your model.

This package utilizes [laravel-excel](https://github.com/SpartnerNL/Laravel-Excel) which is a wrapper around [PhpSpreadsheet](https://github.com/PHPOffice/phpspreadsheet/)

Installation
------------

[](#installation)

```
$ composer require syspons/laravel-sheetable
```

Concept
-------

[](#concept)

The package provides an interface to the database using excel import and export. It can be used to create or update entities, *not* to delete them. For updating a unique identifier in the table is necessary.

### Dropdownable

[](#dropdownable)

Plain data from the table will be shown in the export as is. However, there might be relations within the data, that shall be shown inside the export (or import). These are defined by `DropdownConfig`s. These represent a relation within the excel. It is possible to include **one to many** and **many to many** relationships. For every relation you'll find a dropdown in your excel to select one of the related entities. There will be a workbook inside your spreadsheet that contains all related models, mapped to their key, in order to make it possible to import these relations as well.

### Join

[](#join)

If you want more, than a single column of a relation joined to your export table, you will need to use the `Join` functionality. You have the possibility to add nested joins and to select any column of the joined table.

Usage
-----

[](#usage)

- Create your table and corresponding model, eg. with `php artisan make:model YourModel -m`
- Implement the `Sheetable` interface in your newly generated model.
- The package will register the following routes:
    - Export, *get, post* `yourmodels/export` =&gt; export all desired entities
    - Template, *get* `yourmodels/template` =&gt; export an empty spreadsheet
    - Import, *post* `yourmodels/import` =&gt; import a spreadsheet

Options
-------

[](#options)

To change the default options use

```
$ php artisan vendor:publish --provider="syspons\Sheetable\SheetableServiceProvider" --tag="config"
```

- Inherited from [laravel-targetable](https://docs.syspons-dev.com/laravel-targetable)
    - `namespace`: String or array with one ore multiple namespaces that should be monitored for the configured trait. Defaults to `App\Models`.
    - `namespace_mode`: Defines the search mode for the namespaces. `ClassFinder::STANDARD_MODE` will only find the exact matching namespace, `ClassFinder::RECURSIVE_MODE` will find all subnamespaces. Defaults to `ClassFinder::STANDARD_MODE`.
    - `prefix`: Defines the route prefix. Defaults to `api`.
- Formats
    - `export_format`: Defines the export format. Possible values are: `XLSX`, `CSV`, `TSV`, `ODS`, `XLS`, `HTML`, `MPDF`, `DOMPDF`, `TCPDF`. See the [Laravel-Excel Documentation](https://docs.laravel-excel.com/3.1/exports/export-formats.html). Defaults to `XLSX`.
    - `import_format`: Defines the import format. Possible values are: `XLSX`, `CSV`, `TSV`, `ODS`, `XLS`, `SLK`, `XML`, `GNUMERIC`, `HTML`. See the [Laravel-Excel Documentation](https://docs.laravel-excel.com/3.1/imports/import-formats.html). Defaults to `ANY`.

Architecture
------------

[](#architecture)

- The package relies on [laravel-targetable](https://docs.syspons-dev.com/laravel-targetable) to connect specific functionality to Laravel model entities via contracts. (`Sheetable`, `Dropdownable`).
- The entrypoints to all functionality is provided by the `SheetController` by utilizing `laravel-excel`.
    - `SheetsExport` is used to provide export + template functionality.
    - `SheetImport` is used to provide import functionality.
    - Both rely on `SpreadsheetHelper` and `SpreadsheetUtils` for core functionality.
- `ExportRequest` implements the rules for selecting entities or columns to export
- The `SpreadsheetDropdowns` helper implements all functionality connected to relations / `Dropdownable`s.
- `SpreadsheetJoins` and `Join` gather the join functionality.

Compatibility
-------------

[](#compatibility)

Tested with Laravel 10.x.

License
-------

[](#license)

See [License File](license.md). Copyright © 2023 Jan Bladt.

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 50.9% 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

Every ~15 days

Total

45

Last Release

961d ago

Major Versions

1.0.28.346 → 2.0.02022-03-23

2.1.3 → 3.0.02023-02-16

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3034025?v=4)[Jan Bladt](/maintainers/berthott)[@berthott](https://github.com/berthott)

![](https://avatars.githubusercontent.com/u/11186042?v=4)[Andreas Jabusch](/maintainers/ajabusch)[@ajabusch](https://github.com/ajabusch)

---

Top Contributors

[![berthott](https://avatars.githubusercontent.com/u/3034025?v=4)](https://github.com/berthott "berthott (86 commits)")[![ajabusch](https://avatars.githubusercontent.com/u/11186042?v=4)](https://github.com/ajabusch "ajabusch (79 commits)")[![syspons](https://avatars.githubusercontent.com/u/91200693?v=4)](https://github.com/syspons "syspons (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/syspons-laravel-sheetable/health.svg)

```
[![Health](https://phpackages.com/badges/syspons-laravel-sheetable/health.svg)](https://phpackages.com/packages/syspons-laravel-sheetable)
```

###  Alternatives

[bagisto/bagisto

Bagisto Laravel E-Commerce

27.6k172.1k9](/packages/bagisto-bagisto)[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[typicms/base

A modular multilingual CMS built with Laravel, enabling developers to manage structured content like pages, news, events, and more.

1.6k20.4k](/packages/typicms-base)[yorcreative/laravel-scrubber

A laravel package that scrubs sensitive information for you.

15782.6k2](/packages/yorcreative-laravel-scrubber)[eightynine/filament-excel-import

Import Excel files with Laravel Filament.

96200.2k1](/packages/eightynine-filament-excel-import)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1235.9k20](/packages/fleetbase-core-api)

PHPackages © 2026

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