Laravel ile Excel Import ve Export İşlemleri

Merhaba arkadaşlar Laravel ile Excel'e veri Export etme ve hazırladığımız bir veriyi Excel'den Import etme işlemleri nasıl yapılır sorularına cevap arayıp öğreneceğiz. Bir çok alanda işimizi kolaylaştıran Excel import ve export işlemleri Laravelde oldukça kolay şekilde yapılıyor. Composer aracılığıyla yapacağımız bu işlemleri inceleyelim.

Laravel'de Excel İşlemleri

Öncelikle composer kurulumunu şu komutla gerçekleştiriyoruz.

composer require maatwebsite/excel

 

Ardından;

php artisan make:import YaziImport

app/Imports/YaziImport.php bu dizine import klasörünün altına verdiğimiz isimle dosyamızı oluşturuyoruz.

//YaziImport

<?php

     namespace App\Imports;

     use App\Models\Yazilar;

     use Maatwebsite\Excel\Concerns\ToModel;

     use Maatwebsite\Excel\Concerns\WithHeadingRow;

 

class UsersImport implements ToModel, WithHeadingRow

     {

/**

          * @param array $row

*

           * @return \Illuminate\Database\Eloquent\Model|null

*/

public function model(array $row)

  {

       return new Yazilar([

        'title' => $row['title'],

        'description' => $row['description'],

        ]);

  }

}

şeklinde yukarıda kendi Model sayfamızı dahil etmeyi unutmadan bu kodları   YaziImport dosyamıza yazıyoruz.

Daha sonra export edeceğimiz sayfayı hazırlamak için şu kodları uyguluyoruz

php artisan make:export YaziExport

app/Exports/YaziExport.php sonrasında da aşağıdaki kodları oluşturduğumuz sayfaya yazıyoruz.

//app/Exports/YaziExport.php

<?php

     namespace App\Exports;

     use App\Models\Yazilar;

     use Maatwebsite\Excel\Concerns\FromCollection;

     use Maatwebsite\Excel\Concerns\WithHeadings;

class UsersExport implements FromCollection, WithHeadings

{

/**

    * @return \Illuminate\Support\Collection

*/

  public function collection()

  {

      return Yazi::select("id", "title", "description")->get();

  }

/**

* Write code on Method

*

* @return response()

*/

public function headings(): array

 {

     return ["ID", "Title", "Description"];

  }

}

Ardından Controller dosyamız var ise mevcur Controller'a yok ise;

php artisan make:controller HomeController 

şeklinde controller dosyamızı oluşturduktan sonra;

//HomeController 

<?php

     namespace App\Http\Controllers;

     use Illuminate\Http\Request;

     use App\Exports\YaziExport;

     use App\Imports\YaziImport;

     use Maatwebsite\Excel\Facades\Excel;

     use App\Models\Yazilar;

 class UserController extends Controller

  {

/**

     * @return \Illuminate\Support\Collection

*/

   public function index()

  {

     $yazilar = Yazilar::get();

     return view('yazilar', compact('yazilar'));

  }

/**

* @return \Illuminate\Support\Collection

*/

   public function export()

  {

     return Excel::download(new YaziExport, 'yazilar.xlsx');

  }

/**

*  @return \Illuminate\Support\Collection

*/

   public function import()

  {

      Excel::import(new YaziImport,request()->file('file'));

 

   return back();

  }

}

şeklinde kodlarımızı düzenleyelim.

routes/web.php sayfamıza şu kod bloğumuzda yazalım.

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\HomeController;

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

     Route::controller(HomeController::class)->group(function(){

     Route::get('yazilar', 'index');

     Route::get('yazilar-export', 'export')->name('yazilar.export');

     Route::post('yazilar-import', 'import')->name('yazilar.import');

});

 

Ardından blade sayfamızı oluşturalım. resources/views/yazilar.blade.php 

//resources/views/yazilar.blade.php 

<!DOCTYPE html>

<html>

<head>

<title>Laravel 10 Excel Import Export Database - tenik.net</title>

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">

</head>

<body>

  <div class="container">

    <div class="card bg-light mt-3">

       <div class="card-header">

Laravel 10 Excel Import Export Database - tenik.net

       </div>

  <div class="card-body">

    <form action="{{ route('yazilar.import') }}" method="POST" enctype="multipart/form-data">

@csrf

    <input type="file" name="file" class="form-control">

<br>

    <button class="btn btn-success">Import Yazi Data</button>

   </form>

 <table class="table table-bordered mt-3">

<tr>

<th colspan="3">

List Of Users

<a class="btn btn-warning float-end" href="{{ route('yazilar.export') }}">Export Yazi Data</a>

</th>

</tr>

<tr>

<th>ID</th>

<th>Title</th>

<th>Description</th>

</tr>

   @foreach($yazilar as $yazi)

 <tr>

  <td>{{ $yazi->id }}</td>

  <td>{{ $yazi->title }}</td>

  <td>{{ $yazi->description }}</td>

</tr>

@endforeach

</table>

   </div>

     </div>

       </div>

</body>

</html>

blade sayfamızı da oluşturduk.

Ardından serve işlemini yapalım ;

php artisan serve 

 Ve localhost'ta şu adrese gidelim.

http://localhost:8000/yazilar

 şeklinde çalıştıralım eğer veritabanımızda kayıtlı veriler var ise aşağıdaki şekilde görüntüleyeceğiz. Yok ise de gerekli başlık düzenlemeleri ile excel import ederek test edebilir ve görüntüleyebilirsiniz.



E-Bültenime Abone Ol



Anahtar Kelimeler: Laravel,Excel çıktısı
Yazan: Emre TENİK

Bu yazı: 129 kez okundu



Yorum Yap




Yorumlar: