cara import export file csv dan excel di laravel 10

Cara Import Export File CSV dan Excel di Laravel 10

Pada artikel ini, kita akan belajar mengenai import export file csv dan excel di laravel 10. Kita akan mengimpor data ke database menggunakan file csv di laravel 10.

Pada tutorial kali ini, kita akan menggunakan plugin maatwebsite/excel. Dengan menggunakan plugin ini Anda dapat dengan mudah mengimpor dan mengekspor file csv dan excel pada contoh laravel 10. Untuk import file csv dan excel, kita akan menggunakan class import. Sedangkan untuk export file csv dan excel akan menggunakan class export.

Install Laravel 10

Pada langkah ini, kita akan menginstal laravel 10 menggunakan perintah berikut. Jalankan perintah berikut di terminal Anda.

composer create-project --prefer-dist laravel/laravel laravel_10_import_export_csv_excel

Konfigurasi Database

Setelah itu, kita akan mengonfigurasi konfigurasi database. Jadi, buka file .env dan tambahkan detail untuk koneksi database seperti berikut ini.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=import_export_csv_excel
DB_USERNAME=root
DB_PASSWORD=

Install Package maatwebsite/excel

Sekarang, kita akan menginstal paket maatwebsite menggunakan perintah di bawah ini.

composer require maatwebsite/excel

Maatwebsite\Excel\ExcelServiceProvider ditemukan secara otomatis dan terdaftar secara default. Jika Anda ingin mendaftarkannya sendiri, tambahkan ServiceProvider di config/app.php:

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

Facade Excel juga ditemukan secara otomatis. Jika Anda ingin menambahkannya secara manual, tambahkan Facade di config/app.php.

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

Untuk mempublikasikan konfigurasi, jalankan perintah vendor publish:

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

Ini akan membuat file konfigurasi baru bernama config/excel.php.

Membuat Data Dummy

Setelah menambahkan alias dan provider, kita akan menambahkan beberapa record dummy di dalam database dengan menggunakan perintah di bawah ini.

php artisan tinker

factory(App\User::class, 100)->create();

Menambahkan Route Baru

Pada langkah ini, kita membuat rute baru di file routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\ImportExportController;

Route::controller(ImportExportController::class)->group(function(){
    Route::get('import_export', 'importExport');
    Route::post('import', 'import')->name('import');
    Route::get('export', 'export')->name('export');
});

Menambahkan Controller

Sekarang, kita akan membuat ImportExportController dengan menggunakan perintah berikut.

php artisan make:controller ImportExportController

Setelah menjalankan perintah ini, kita akan menambahkan kode berikut ke App/Http/Controllers/ImportExportController.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\ExportUsers;
use App\Imports\ImportUsers;
use Maatwebsite\Excel\Facades\Excel;

class ImportExportController extends Controller
{
     public function importExport()
    {
       return view('import');
    }

    public function export() 
    {
        return Excel::download(new ExportUsers, 'users.xlsx');
    }

    public function import() 
    {
        Excel::import(new ImportUsers, request()->file('file'));
            
        return back();
    }
}

Membuat Import dan Export Class

Sekarang, kita akan membuat import class menggunakan perintah di bawah ini.

php artisan make:import ImportUsers --model=User

Setelah menjalankan perintah ini, Anda akan menemukan file app\Imports\ImportUsers.php dan tambahkan code berikut.

<?php

namespace App\Imports;

use App\User;
use Maatwebsite\Excel\Concerns\ToModel;

class ImportUsers implements ToModel
{
    public function model(array $row)
    {
        return new User([
            'name'     => $row[0],
            'email'    => $row[1],
        ]);
    }
}

Setelah itu, kita akan membuat export class menggunakan perintah di bawah ini.

php artisan make:export ExportUsers --model=User

Kemudian buka file app\Export\ExportUsers.php dan tambahkan code berikut.

<?php

namespace App\Exports;

use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class ExportUsers implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

Menambahkan Tampilan

Selanjutnya, kita akan membuat file resources/views/import.blade.php dengan menambahkan code berikut untuk membuat tampilan terlihat lebih cantik.

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Laravel 10 Import Export CSV And EXCEL File - Leravio</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
	<h3>Laravel 10 Import Export CSV And EXCEL File - Leravio</h3>
	<form action="{{ route('import') }}" method="POST" name="importform"
	  enctype="multipart/form-data">
		@csrf
		<div class="form-group">
			<label for="file">File:</label>
			<input id="file" type="file" name="file" class="form-control">
		</div>
		<div class="form-group">
			<a class="btn btn-info" href="{{ route('export') }}">Export File</a>
		</div> 
		<button class="btn btn-success">Import File</button>
	</form>
</div>
</body>
</html>

Jalankan Laravel 10

Sekarang kita telah sampai pada langkah terakhir yaitu pengujian. Untuk melihat hasilnya, apakah kita telah berhasil menerapkan import dan export file csv/excel di laravel 10.

Silahkan jalankan project dengan menjalankan perintah php artisan serve, kemudian buka project laravel di browser. Anda bisa membuka url http://localhost:8000/import_export untuk mencoba import dan export file csv/excel.

Jika ada pertanyaan, Anda bisa langsung tulis di kolom komentar di bawah ini.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top