Laravel Excel Dosyasını Adım Adım İçe Aktarma Rehberi
Laravel'da Excel Dosyası Nasıl İçe Aktarılır?
Laravel, web uygulama geliştirmeyi basitleştiren güçlü bir PHP çatısıdır. Projeleriniz veri işlemleri içeriyorsa, muhtemelen Excel dosyalarından veri içe aktarma ihtiyacı duyacaksınız. Laravel uygulamanıza Excel dosyalarını içe aktarmak, çeşitli kaynaklardan veri alımıyla uğraşırken sıkça karşılaşılan bir işlemdir.
Bu rehberde, popüler Laravel Excel paketini kullanarak Laravel'de Excel dosyalarını içe aktarma işlemini adım adım anlatacağım.
Laravel'de Excel Dosyası İçe Aktarımı için Ön Koşullar:
Rehbere başlamadan önce aşağıdaki ön koşullara sahip olduğunuzdan emin olun:
- Çalışan bir Laravel projesi kurulu ve çalışıyor durumda.
- Laravel'ın Eloquent ORM ve Blade şablonlama motoru hakkında temel bilgi.
- Sisteminizde Composer kurulu.
Laravel'de Excel Dosyası İçe Aktarma Adımları:
Adım 1: Laravel Excel'i Kurun
Başlamak için Laravel maatwebsite/excel paketini kurmanız gerekecek. Terminalinizi açın ve Laravel projesinin kök dizinine gidin. Ardından aşağıdaki komutu çalıştırın:
composer require maatwebsite/excel
Bu komut ile Laravel Excel paketi ve bağımlılıkları projenize yüklenir.
Adım 2: Paketi Yapılandırın
Kurulumdan sonra, Laravel Excel paketini yapılandırmanız gerekecek. config/app.php
dosyasını açın ve aşağıdaki hizmet
sağlayıcısını ve aliası sırasıyla hizmet sağlayıcıları ve aliaslar dizilerine ekleyin:
// config/app.php
'providers' => [
// ...
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
// ...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
Daha sonra, aşağıdaki komutu çalıştırarak paket yapılandırma dosyasını yayınlayın:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
Bu komut, yapılandırma ayarlarınızı özelleştirebileceğiniz bir config/excel.php
dosyası oluşturacaktır.
Adım 3: Bir Controller Oluşturun
Şimdi, Excel dosyası içe aktarımını yönetecek bir controller oluşturalım. Yeni bir kontrolör oluşturmak için aşağıdaki komutu çalıştırın:
php artisan make:controller ExcelImportController
Bu komut, app/Http/Controllers
dizininde ExcelImportController.php
adında bir dosya oluşturacaktır.
Adım 4: İçe Aktarma için Logic Tanımlayın
ExcelImportController.php
dosyasını açın ve içe aktarma mantığını bir yöntem içinde tanımlayın. Örneğin, import
adında bir yöntem oluşturalım:
// app/Http/Controllers/ExcelImportController.php
use Excel;
class ExcelImportController extends Controller
{
public function import(Request $request)
{
// Yüklenen dosyayı doğrulayın
$request->validate([
'file' => 'required|mimes:xlsx,xls',
]);
// Yüklenen dosyayı alın
$file = $request->file('file');
// Excel dosyasını işleyin
Excel::import(new YourImportClass, $file);
return redirect()->back()->with('success', 'Excel dosyası başarıyla içe aktarıldı!');
}
}
Bu kodda, öncelikle yüklenen dosyanın .xlsx
veya .xls
türünde olduğunu doğruluyoruz. Doğrulama kurallarını
ihtiyaçlarınıza göre ayarlayabilirsiniz. Daha sonra, Excel dosyasını bir sonraki adımda oluşturacağımız bir içe aktarma
sınıfı kullanarak işliyoruz.
Adım 5: Bir İçe Aktarma Sınıfı Oluşturun
Excel dosyasından verilerin nasıl içe aktarılacağını belirten bir içe aktarma sınıfı oluşturmanız gerekiyor. Bir içe aktarma sınıfı oluşturmak için aşağıdaki komutu çalıştırın:
php artisan make:import YourImportClass
Bu komut, app/Imports
dizininde bir dosya oluşturacaktır. Bu dosyayı açın ve içe aktarma mantığını tanımlayın. İşte
nasıl görünebileceğine dair bir örnek:
// app/Imports/YourImportClass.php
namespace App\Imports;
use Maatwebsite\Excel\Concerns\ToModel;
class YourImportClass implements ToModel
{
public function model(array $row)
{
// Excel satır verilerinden bir model
return new YourModel([
'column1' => $row[0],
'column2' => $row[1],
// Gerektiğinde daha fazla sütun ekleyin
]);
}
}
Bu kodda, model
yöntemi Excel dosyasının her satırındaki verilerden bir model oluşturmayı belirtir. Bu yöntemi, Excel
dosyanızın yapısına ve Laravel modelinize uygun olarak ayarlamalısınız.
Adım 6: Bir Blade Görünümü Oluşturun
Şimdi, kullanıcıların Excel dosyasını yüklemelerine izin veren bir Blade görünümü oluşturun. İşte basit bir örnek:
<!-- resources/views/excel-import.blade.php -->
@extends('layouts.app')
@section('content')
<div class="container">
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<form action="{{ route('import.excel') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="file">Excel Dosyası Seçin</label>
<input type="file" name="file" id="file" class="form-control">
</div>
<button type="submit" class="btn btn-primary">İçe Aktar</button>
</form>
</div>
@endsection
Bu Blade görünümü, Excel dosyalarını yüklemek için bir dosya girişi alanı içeren bir form içerir. Ayrıca, içe aktarım başarılı olduğunda bir başarı mesajı gösterir.
Adım 7: Bir Route Oluşturun
web.php
dosyanızda (routes dizininde bulunur), Excel içe aktarma görünümü ve içe aktarma işlemi için bir route
tanımlayın:
// routes/web.php
Route::get('/import-excel', 'ExcelImportController@index')->name('import.excel');
Route::post('/import-excel', 'ExcelImportController@import');
Adım 8: Excel İçe Aktarmayı Test Edin
Her şey ayarlandıktan sonra, Excel içe aktarma özelliğinizi test edebilirsiniz. Laravel geliştirme sunucunuzu çalıştırarak başlayın:
php artisan serve
Tarayıcınızda Excel içe aktarma sayfasını ziyaret edin, genellikle http://localhost:8000/import-excel. Bir Excel dosyası yükleyin ve her şey doğru yapılandırılmışsa, veriler veritabanınıza içe aktarılmalıdır.
Sonuç:
Bu rehberde, Laravel'de Excel dosyalarını içe aktarma adımlarını açıkladık, bunu Laravel Excel paketi ile yapabilirsiniz. Paketi kurma ve yapılandırma adımlarını, bir controller ve içe aktarma sınıfı oluşturma, dosya yükleme için Blade görünümü oluşturma, route tanımlama ve içe aktarma işlemini test etme gibi adımları öğrendiniz.
Bu özellik, büyük veri kümeleriyle çalışırken veya Excel elektronik tablolarından veri çekmeniz gerektiğinde oldukça yararlı olabilir. Kodu projenizin ihtiyaçlarına uyacak şekilde özelleştirebilir ve güçlü bir Excel içe aktarma özelliğini Laravel uygulamanıza entegre edebilirsiniz.