laravel ile xlsx (excel) dosyalarını mysql'e aktarmak

öncelikle selamlar, çoğu yazılım geliştiricinin hayatında en az bir kere ihtiyacı olacağı bir şey excel dosyalarını bir yere aktarmak. benim de aynı şekilde excel dosyasını içeri aktarmam gerekti ve bunun için laravel-excel paketini kullandım.

hali hazırda bir laravel projesi kurduğunuzu varsayarak başlıyorum. ilk olarak paketi projemize dahil edelim.

composer require maatwebsite/excel

konsolumuza paketimizi dahil edip yüklenmesini bekleyelim.

paketimiz yüklendikten sonra config/app.php dosyasında provider ve alias alanlarına projemizin bilgilerini tanımlayalım.


providers ve alias bölümü

/* Provides Alanımız */

'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

/* Alias Alanımız */

'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]

son olarak ayarlarmızı da publish ettikten sonra kurulum işlemimiz tamamlanacak.

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"


evet, kurulumumuz tamamlandı. artık paketimizi kullanmaya başlayabiliriz.

config/excel.php dosyasının oluştuğunu göreceksiniz, burada paket ile ilgili belirli ayarlar bulunmaktadır. ben şuanda ekstra bir ayara ihtiyaç duymadığım için buraya değinmeyeceğim. yazımın sonunda paketin dökümantasyon adresini paylaşacağım. dilerseniz oradan inceleyebilirsiniz.


import işlemi için konsolumu açıp gerekli komutu çalıştırıyorum.

php artisan make:import UsersImport --model=User

yapacağımız örnekte kullanıcıları içeri aktaracağız. User classını kullanarak bir import dosyası oluşturduk.

bu komut app\Imports\UserImport.php adında bir dosya oluşturdu.

bu dosyayı açtığınızda karşınıza gelecek ve ekranda model() methodunun altında yapacağımız işlemleri belirleyeceğiz.

aslında controller da bunu tanımlayıp hangi excel sütununun hangi mysql kolonuna denk geldiğini burada belirliyoruz.

UsersImport.php dosyamızın içerisinde kullanıcı modelini oluşturalım


 return new User([
           'name'     => $row[0],
           'email'    => $row[1], 
           'password' => Hash::make($row[2]),
        ]);

Burada gördüğünüz $row dizisi bizim birazdan controller üzerinde belirteceğimiz excel dosyasının içerisindeki sütunları ifade eder.

  1. ilk sütun = kullanıcı adı
  2. ikinci Sütun = e-posta adresleri
  3. son olarak ise oradaki text formatında bulunan şifre, ve bunu gördüğünüz üzere laravelde işleyip kullanabiliyorsunuz. excel de 1234 olan şifre değerini burada hashleyip tutabiliyorsunuz


ve son olarak gelelim controller'da bu belirlediğimiz verileri nasıl kullanacağımıza.


öncelikle use ile bu paketi kullanacağımızı belirtelim.

use Maatwebsite\Excel\Facades\Excel;

şimdi ise belirediğimiz excel dosyasını burada işleyelim.


class UsersController extends Controller 
{
    public function import() 
    {
        Excel::import(new UsersImport, ' kullanicilar.xlsx');
        
        return redirect('/')->with('success', 'İçeri aktarma işlemi başarılı!');
    }
}

içeri aktarma işlemimiz bu kadar basit. örnek olarak excel dosyasının resmini buraya bırakıyorum



dilerseniz paketin orijinal dökümantasyonundan daha spesifik işlemleri öğrenebilir, github üzerinden starlayabilirsiniz :)

dökümantasyon adresi : https://laravel-excel.com/

github adresi : https://github.com/Maatwebsite/Laravel-Excel




iyi çalışmalar !

Fatih Kobacık

https://fatihkobacik.com.tr/...

"laravel ile xlsx (excel) dosyalarını mysql'e aktarmak" için hiç yorum yapılmadı.

Henüz yorum yapılmamış.

Yorum yap * E-posta adresiniz yayınlanmayacak.