Import csv file in laravel

        1. Install maatwebsite via the Composer package manager

            composer require maatwebsite/excel

      2. Then open config/app.php file and add service provider and aliase.

        'providers' => [

Maatwebsite\Excel\ExcelServiceProvider::class,

        ],

        'aliases' => [

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

        ],

        3. Define Routes 

            In routes/web.php

            Route::get('/upload','PostController@index');
       Route::post('/pupload','PostController@uploadp')->name('uploadp');

    
        4. Create import Section 

            php artisan make:import PostsImport --model=Post

           app/Imports/PostsImport.php
            
            <?php

        namespace App\Imports;

        use App\Post;
        use Throwable;
        use Maatwebsite\Excel\Concerns\ToModel;
        use Maatwebsite\Excel\Concerns\Importable;
        use Maatwebsite\Excel\Concerns\SkipsErrors;
        use Maatwebsite\Excel\Concerns\SkipsFailures;
        use Maatwebsite\Excel\Concerns\SkipsOnError;
        use Maatwebsite\Excel\Concerns\SkipsOnFailure;
        use Maatwebsite\Excel\Concerns\WithStartRow;
        use Maatwebsite\Excel\Concerns\WithValidation;

        class PostsImport implements ToModelSkipsOnError
        {
        use Importable,SkipsErrors, SkipsFailures;
   
        public function model(array $row)
        {
        
        return new Post([ 'name' => $row[0] ]);
        
        }

        public function onError(Throwable $error)
         {
         
        
         }
    }


        5. Create View File 

            recources/views/upload.blade.php

<div class="login-form">
    @if (session('success'))
    <div class="alert alert-success">
        {{ session('afterposts') - session('beforeposts') }} {{ session('success') }}
    </div>
    
    
    @endif
    <form action="{{ route('uploadp') }}" method="post" enctype="multipart/form-data">
        @csrf
        <h2 class="text-center mt-4">Post Upload</h2>       
        <div class="form-group">
            <input type="file" class="form-control" name="file"  >
            @error('title')
                <div class="alert-danger">{{ $message }}</div>
                @enderror
        </div>
       
        <div class="form-group">
            <button type="submit" class="btn btn-primary btn-block">Upload</button>
        </div>
       
    </form>
</div>

        
            5. Create PostController 

            app/http/Contriller/PostController.php
<?php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use App\Imports\PostsImport;


class PostController extends Controller
{
public function index()
    { 
    
        return view('upload');
        
    }
public function uploadp(Request $request){
        $beforeposts = Post::all()->count();        
          Excel::import(new PostsImport,request()->file('file'));
        $afterposts = Post::all()->count();
    return back()->with('success','Products imported.')
->with('beforeposts', $beforeposts)->with('afterposts', $afterposts);
              
    }
}

Comments

Popular posts from this blog

Add Css And Js Files on Specific Page In laravel

Xpendy Pending

Laravel Join with two coloums