ouarea/excel-m

A faster and more eloquent way of importing and exporting Excel and CSV in Laravel with the speed of Spout


Keywords
excel, xls, csv, import, export, laravel, read, write, ods, spout, xlxs
License
MIT

Documentation

Laravel Excel Light

No plans for further development and/or support. This is just an experiment to improve the Laravel-Excel library.

A faster and more eloquent way of importing and exporting Excel and CSV in Laravel with the speed of Spout.

Installation

composer require maatwebsite/laravel-excel-light

Add the Service Provider in app.php

Maatwebsite\ExcelLight\LaravelExcelServiceProvider::class

The Excel class can be injected in your service:

public function __construct(\Maatwebsite\ExcelLight\Excel $excel)

Optionally you can also inject the Reader and Writer:

public function __construct(\Maatwebsite\ExcelLight\Reader $reader)
public function __construct(\Maatwebsite\ExcelLight\Writer $writer)

Reading

Fluent usage:

$excel->load(storage_path('workbook.xlsx'), function (Reader $reader) {
    $reader->sheets(function (Sheet $sheet) {
        $sheet->rows(function (Row $row) {

            // Get a column
            $row->column('heading_key');

            // Magic get
            $row->heading_key;

            // Array access
            $row['heading_key'];
        });
    });
});

Classic usage:

$reader = $excel->load(storage_path('workbook.xlsx'));

foreach ($reader->sheets() as $sheet) {
    foreach ($sheet->rows() as $row) {

        $row->column('heading_key');

        foreach ($row->cells() as $cell) {

        }
    }
}

Writing

$excel->create(function (Writer $writer) {
    $writer->sheet('sheet1', function (Writer $sheet) {
        $sheet->rows([
            [1, 2, 3],
            [4, 5, 6]
        ]);

        // Add more rows
        $sheet->rows([
            [7, 8, 9],
            [10, 11, 12]
        ]);
    });
})->export(storage_path('workbook.xlsx'));

Custom Readers and Writers

Registering a customer reader:

$this->app->make(\Maatwebsite\ExcelLigt\ExcelManager::class)
    ->registerReader('driverName', function() {
        return YourReader();
    });

Registering a customer writer:

$this->app->make(\Maatwebsite\ExcelLigt\ExcelManager::class)
    ->registerWriter('driverName', function() {
        return YourWriter();
    });

Resolving a custom reader and writer:

__construct(ExcelManager $manager) {
    $reader = $manager->reader('driverName');
    $writer = $manager->writer('driverName');
}