osmaviation/spreadsheet

A simple wrapper around PHP Spreadsheet
10,559
Install
composer require osmaviation/spreadsheet
Latest Version:1.10
Laravel:5 – 12
Last Updated:Oct 8, 2025
Links: GitHub  ·  Packagist
Maintainer: tormjens

Spreadsheet

A simple Laravel abstraction to the PHPSpreadsheet (previously PHPExcel) library, ideal for writing XLSX (Excel) files.

Installing

composer require osmaviation/spreadsheet

Using

Via resolve

$filename = 'my-filename.xlsx';

resolve('spreadsheet')->create($filename, function ($excel) {
    $excel->sheet('Worksheet', function ($sheet) {
        $sheet->fromArray([
            'Foo',
            'Bar',
        ], null, 'A1', true, false);
    });
});

Via facade

use OSMAviation\Spreadsheet\Facades\Spreadsheet;

$filename = 'my-filename.xlsx';

Spreadsheet::create($filename, function ($excel) {
    $excel->sheet('Worksheet', function ($sheet) {
        $sheet->fromArray([
            'Foo',
            'Bar',
        ], null, 'A1', true, false);
    });
});

Via injection

use OSMAviation\Spreadsheet\PhpSpreadsheet as Spreadsheet;

class MyController 
{
    public function store(Spreadsheet $spreadsheet)
    {
        $filename = 'my-filename.xlsx';
        
        $spreadsheet->create($filename, function ($excel) {
            $excel->sheet('Worksheet', function ($sheet) {
                $sheet->fromArray([
                    'Foo',
                    'Bar',
                ], null, 'A1', true, false);
            });
        });
    }
}

Saving the spreadsheet

$filename = 'some-folder/my-filename.xlsx';

Spreadsheet::create($filename, function ($excel) {
    $excel->sheet('Worksheet', function ($sheet) { 
        // $sheet will be a PhpOffice\PhpSpreadsheet\Worksheet\Worksheet instance
        $sheet->fromArray([
            'Foo',
            'Bar',
        ], null, 'A1', true, false);
    });
})->store('local');

Loading a file

Spreadsheet::load($filename, function ($excel) {
    $excel->sheet('Some existing sheet', function($sheet) {
        //
    });
});

You can also pass the disk name as the second argument to the load method to load files from a different file system.

Spreadsheet::load($filename, 's3', function ($excel) {
    $excel->sheet('Some sheet', function($sheet) {
        //
    });
});

Accessing a PHPSpreadsheet spreadsheet

The callback for the create method will provide an instance of OSMAviation\Spreadsheet\Spreadsheet which is a convenience layer for creating worksheets. You can access the vendor spreadsheet by using the getSpreadsheet method.

Spreadsheet::create($filename, function ($excel) {
    $vendorSheet = $excel->getSpreadsheet(); // returns a PhpOffice\PhpSpreadsheet\Spreadsheet instance
})->store('local');

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

641,106,524 9,700
laravel/framework

The Laravel Framework.

593,882,149 34,959
laravel/tinker

Powerful REPL for the Laravel framework.

502,645,077 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

418,291,778 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

394,964,158 4,660

Version History

Version Released Laravel License
1.10 >=5.5
1.9.1 >=5.5
1.9 >=5.5
1.8 >=5.5
1.7 >=5.5