# Exporting collections
The easiest way to start an export is to create a custom export class. We'll use an invoices export as example.
Create a new class called InvoicesExport
in app/Exports
:
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
class InvoicesExport implements FromCollection
{
public function collection()
{
return Invoice::all();
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
In your controller we can now download this export:
public function export()
{
return Excel::download(new InvoicesExport, 'invoices.xlsx');
}
1
2
3
4
2
3
4
Or store it on a (e.g. s3) disk:
public function storeExcel()
{
return Excel::store(new InvoicesExport, 'invoices.xlsx', 's3');
}
1
2
3
4
2
3
4
💡 More about storing exports can be found in the storing exports on disk page.
# Dependency injection
In case your export needs dependencies, you can inject the export class:
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
class InvoicesExport implements FromCollection
{
public function __construct(InvoicesRepository $invoices)
{
$this->invoices = $invoices;
}
public function collection()
{
return $this->invoices->all();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function export(Excel $excel, InvoicesExport $export)
{
return $excel->download($export, 'invoices.xlsx');
}
1
2
3
4
2
3
4
# Strict null comparisons
If you want your 0
values to be actual 0
values in your excel sheet instead of null
(empty cells), you can use WithStrictNullComparison
.
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
class InvoicesExport implements FromCollection, WithStrictNullComparison
{
public function __construct(InvoicesRepository $invoices)
{
$this->invoices = $invoices;
}
public function collection()
{
return $this->invoices->all();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Collection macros
The package provides some macro to Laravel's collection class to easily download or store a collection.
# Downloading a collection as Excel
(new Collection([[1, 2, 3], [1, 2, 3]]))->downloadExcel(
$filePath,
$writerType = null,
$headings = false
)
1
2
3
4
5
2
3
4
5
# Storing a collection on disk
(new Collection([[1, 2, 3], [1, 2, 3]]))->storeExcel(
$filePath,
$disk = null,
$writerType = null,
$headings = false
)
1
2
3
4
5
6
2
3
4
5
6