Laravel Excel
Excel ve CSV dosyalarını içe ve dışa aktarmayı kolaylaştıran güçlü ve hızlı veri işleme paketi.
Kurulum
Composercomposer require maatwebsite/excel
Dokümantasyon & Kullanım
MarkdownLaravel Excel
Laravel Excel (Maatwebsite), PhpSpreadsheet kütüphanesini Laravel'in zarif koleksiyonları, kuyruk (queue) sistemi, Blade görünümleri ve event yapısıyla harmanlayarak büyük Excel ve CSV dosyalarını zahmetsizce içe (import) ve dışa (export) aktarmanızı sağlar.
Neden Tercih Edilmeli?
- Kuyruk (Queue) Desteği: Milyonlarca satırlık devasa veri setlerini sunucuyu kitlemeden arka plan kuyruklarında parça parça (chunk/queue) işler.
- Blade ile Export: Karmaşık hücre stilleri, başlıklar ve tablolar yerine doğrudan standart HTML Blade şablonu render ederek Excel oluşturabilir.
- Doğrudan Model Eşleme: İçe aktarılan satırları otomatik olarak Eloquent modellerine dönüştürür.
- Toplu Doğrulama (Batch Validation): İçe aktarma sırasında her satırı Laravel Form Request doğrulama kurallarıyla test edebilir ve hataları raporlar.
- Çoklu Sayfa (Multiple Sheets): Tek bir Excel çalışma kitabında birden fazla sekmeyi kolayca yönetir.
Kurulum
Composer ile paketi yükleyin:
composer require maatwebsite/excel
Yapılandırma dosyasını yayınlayın:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
Temel Kullanım
1. Dışa Aktarma (Export) Sınıfı Oluşturma
Artisan ile bir export sınıfı üretin:
php artisan make:export UsersExport --model=User
app/Exports/UsersExport.php dosyasını düzenleyin:
namespace App\Exports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
class UsersExport implements FromCollection, WithHeadings, WithMapping
{
public function collection()
{
return User::all();
}
public function headings(): array
{
return ['ID', 'Ad Soyad', 'E-posta', 'Kayıt Tarihi'];
}
public function map($user): array
{
return [
$user->id,
$user->name,
$user->email,
$user->created_at->format('d.m.Y H:i'),
];
}
}
Controller üzerinden indirme:
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UserController extends Controller
{
public function export()
{
return Excel::download(new UsersExport, 'kullanicilar.xlsx');
}
}
2. Blade Şablonu ile Dışa Aktarma
namespace App\Exports;
use App\Models\Invoice;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
class InvoicesExport implements FromView
{
public function view(): View
{
return view('exports.invoices', [
'invoices' => Invoice::with('customer')->get()
]);
}
}
3. İçe Aktarma (Import) Örneği
Artisan ile bir import sınıfı oluşturun:
php artisan make:import UsersImport --model=User
namespace App\Imports;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class UsersImport implements ToModel, WithHeadingRow
{
public function model(array $row)
{
return new User([
'name' => $row['ad_soyad'],
'email' => $row['e_posta'],
'password' => Hash::make($row['parola'] ?? '12345678'),
]);
}
}
Controller üzerinden dosyayı içe aktarma:
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\Request;
public function import(Request $request)
{
$request->validate([
'file' => 'required|mimes:xlsx,csv,xls',
]);
Excel::import(new UsersImport, $request->file('file'));
return back()->with('success', 'Veriler başarıyla yüklendi.');
}
Paket Bilgileri
Etiketler
Diğer Paketler
TALL stack üzerine kurulu, zarif ve son derece genişletilebilir admin paneli ve CRUD yönetim aracı.
API oluşturmadan Vue, React veya Svelte bileşenlerini klasik Laravel controller ve view yapısıyla SPA olarak çalıştırmayı sağlayan adaptör.
PHP ve Laravel için popüler, güçlü, esnek görsel işleme, kırpma, filtreleme ve optimizasyon kütüphanesi.