• Banjarbaru, Kalimantan Selatan
QmMaJicVqrlv6CRRjPuaMdjU8I7oLX4fzgoYerZ0.png
1 year ago

Tutorial Import File Excel pada Laravel 9

Udah lama gak bikin post hehe, jadi pada postingan akhir tahun ini saya akan membagikan tutorial seputar Laravel. Mungkin disini kalian mempunyai data yang banyak pada file excel tapi males buat input satu per satu ke dalam aplikasi Laravael, tenang Laravel mempunyai fitur buat import file excel tersebut. Oke simak berikut cara import excel pada Laravel

 

  1. Install project Laravel
    Pertama kita bikin project Laravel dulu, caranya gampang tinggal ketik perintah berikut pada terminal/cmd dan tunggu sampai selesai
    composer create-project laravel/laravel import_excel
    nOKSlH7PCBXmlDcxLJfdO3jJA60U51GDXIPaUu2q.png
  2. Install package import excel
    Selanjutnya kalian masuk terlebih dahulu ke dalam folder import_excel lalu kita install package import excel nya, caranya dengan mengetik perintah berikut pada terminal
    composer require psr/simple-cache:^2.0 maatwebsite/excel
    HrK4Aqu1x9q3e60fXxm8jwvfuwnJff3q1X7T1Nvc.png
  3. Database
    Sekarang kita bikin terlebih dahulu database, disini saya menggunakan database MySQL, dan jangan lupa setting juga pada bagian file .env

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

    Kalau sudah langsung kita migrate, caranya dengan mengetik perintah berikut pada terminal

    php artisan migrate

    RdRpy9pLg63OxmA2Jnx9AHCQi8J2q0wScc0QhqwD.png

  4. Membuat import class
    Disini kita perlu membuat import class, table yang kita gunakan nantinya adalah table Users yang otomatis ada saat kita migrate sebelumnya. Jadi untuk membuat class import dapat dilakukan dengan perintah berikut

    php artisan make:import UsersImport --model=User


    Dan secara otomatis akan ada file UserImport pada folder app/Imports

    Sekarang buka file tersebut lalu sesuaikan dengan kode berikut

    <?php
    
    namespace App\Imports;
    
    use App\Models\User;
    use Maatwebsite\Excel\Concerns\ToModel;
    
    class UsersImport implements ToModel
    {
        /**
         * @param array $row
         *
         * @return \Illuminate\Database\Eloquent\Model|null
         */
        public function model(array $row)
        {
            return new User([
                'name'     => $row[0],
                'email'    => $row[1],
                'password' => $row[2],
            ]);
        }
    }
  5. Membuat UserController
    Sekarang kita buat UserController caranya dengan mengetik perintah berikut

    php artisan make:controller UserController

    buka dan sesuaikan dengan kode berikut

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Models\User;
    use App\Imports\UsersImport;
    use Illuminate\Http\Request;
    use Maatwebsite\Excel\Facades\Excel;
    
    class UserController extends Controller
    {
        function index()
        {
            $users = User::all();
            return view('user.index', compact('users'));
        }
    
        function import(Request $request)
        {
            $request->validate([
                'file' => 'required|mimes:xls,xlsx'
            ]);
    
            $file = $request->file('file');
    
            Excel::import(new UsersImport, $file);
    
            return back()->with('success', 'All good!');
        }
    }
  6. Membuat view
    Untuk membuat view silahkan terlebih dahulu buka folder resources/views
    Disini kita bikin folder baru Bernama user dan dalam folder tersebut bikin juga file index.blade.php1Mvis8KnCapYXLefIqxtFCpEYphnqwbV6hwf4Dm6.png

    Buka index.blade.php dan sesuaikan dengan kode berikut

    <!doctype html>
    <html lang="en">
    
    <head>
        <title>Title</title>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS v5.2.1 -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet"
            integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
    
    </head>
    
    <body>
        <header>
            <!-- place navbar here -->
        </header>
        <main>
            <div class="container">
                <div class="row">
                    <div class="col-12 mt-5 mb-3">
                        <form action="/import" method="POST" enctype="multipart/form-data">
                            @csrf
                            @method('POST')
                            <div class="row">
                                <div class="col">
                                    <input type="file" name="file" id="file" class="form-control" required>
                                </div>
                                <div class="col">
                                    <button class="btn btn-success">Import User Data</button>
                                </div>
                            </div>
                        </form>
                    </div>
                    @if (session('success'))
                        <div class="alert alert-success mb-3">
                            {{ session('success') }}
                        </div>
                    @endif
                    <div class="col-12">
                        <h1>Users</h1>
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th scope="col">ID</th>
                                    <th scope="col">Name</th>
                                    <th scope="col">Email</th>
                                    <th scope="col">Created At</th>
                                    <th scope="col">Updated At</th>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach ($users as $user)
                                    <tr>
                                        <th scope="row">{{ $user->id }}</th>
                                        <td>{{ $user->name }}</td>
                                        <td>{{ $user->email }}</td>
                                        <td>{{ $user->created_at }}</td>
                                        <td>{{ $user->updated_at }}</td>
                                    </tr>
                                @endforeach
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
    
        </main>
        <footer>
            <!-- place footer here -->
        </footer>
        <!-- Bootstrap JavaScript Libraries -->
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"
            integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous">
        </script>
    
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js"
            integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous">
        </script>
    </body>
    
    </html>
  7. Mengatur routes
    Langkah terakhir kita atur route supaya controller yang kita bikin sebelumnya dapat dijalankan. Silahkan buka file web.php pada folder routes, dan atur route jadi berikut.
    <?php
    
    use Illuminate\Support\Facades\Route;
    
    Route::get('/', [App\Http\Controllers\UserController::class, 'index'])->name('user.index');
    Route::post('/import', [App\Http\Controllers\UserController::class, 'import'])->name('user.import');
    
  8. Menjalankan aplikasi
    Saatnya program yang kita buat dijalankan, caranya dengan mengetik perintah berikut
    Php artisan serve
    Dan kalau sudah, buka browser dan buka url http://127.0.0.1:8000/
    Maka tampilannya akan menjadi berikutfnGIa2KsXfbTP3mnb1SsB8HZ0ynJMFBaoBJcBpr8.pngSebelumnya melakan upload excel, kita buat terlebih dahulu file excel nya dengan isi excel sebagai berikutfEBh8RkcqJmifPODxq87ZQOqTXYiE2VbcIFnEoDC.pngSaatnya kita coba upload, dan taraa data yang ada di excel sudah masuk ke database kita

Mungkin sekian dulu ya artikel tentang tutorial import file excel pada Laravel 9
Bagi yang mau liat full source dapat dilihat disini ya
https://github.com/padhilahm/import-excel-laravel-9

Comments (2)

client

Teknik Telekomunikasi

1 year ago

Apakah ada library atau package khusus yang harus diinstall untuk melakukan import file Excel pada Laravel 9? <a href="https://journals.telkomuniversity.ac.id/">Tel U</a>

Reply
client

Admin

Penulis 1 year ago

Untuk package yg diperlukan itu meatball/excel

Leave a Reply