LaravelでExcelシートデータを検証する方法

こんにちは開発者、

それでは、laravelでExcelシートデータを検証する方法の記事を見てみましょう。laravelmaatwebsiteのExcelインポート検証についてお見せします。laravelmaatwebsiteの検証例を学びます。LaravelがExcelデータを検証する例を示すお手伝いをします。LaravelのExcelデータを検証する方法を以下の例で見てみましょう。

 

Excelまたはcsvのインポートとエクスポートを行う場合は、常にmaatwebsitecomposerパッケージを使用します。しかし、maatwebsiteパッケージを使用してExcelシートデータを検証する必要があり、わからない場合は、その方法の非常に簡単な例を示します。

 

この例は、laravel 6、laravel 7、laravel8バージョンでも使用できます。次の手順に従って、次のように実行できます。

プレビュー:

 

 

 

ステップ1:Laravel8をインストールする

ここでは、以下のコマンドを使用してLaravelアプリケーションをインストールする必要があるため、ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行します。

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

ステップ2:maatwebsite / excelパッケージをインストールする

このステップでは、Composerパッケージマネージャーを介してmaatwebsite / excelパッケージをインストールする必要があるため、ターミナルを1つ使用して、次のコマンドを実行します。

composer require maatwebsite/excel

次に、config / app.phpファイルを開き、サービスプロバイダーとエイリアスを追加します。

config / app.php

'providers' => [

	....

	Maatwebsite\Excel\ExcelServiceProvider::class,

],

'aliases' => [

	....

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

],

ステップ3:ルートを追加する

このステップでは、インポートエクスポートファイルのルートを作成する必要があります。したがって、「routes / web.php」ファイルを開き、次のルートを追加します。

ルート/web.php

<?php
  
use Illuminate\Support\Facades\Route;
    
use App\Http\Controllers\UserImportController;
  
/*
|--------------------------------------------------------------------------
| 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::get('import', [UserImportController::class, 'index']);
Route::post('import', [UserImportController::class, 'store'])->name('import');

ステップ4:インポートクラスを作成する

maatwebsite 3バージョンでは、インポートクラスを構築する方法が提供されており、コントローラーで使用する必要があります。したがって、新しいImportクラスを作成するのに最適な方法です。したがって、次のコマンドを実行し、そのファイルで次のコードを変更する必要があります。

php artisan make:import UsersImport --model = User

app / Imports / UsersImport.php

<?php
  
namespace App\Imports;
  
use App\Models\User;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Illuminate\Support\Facades\Validator;
  
class UsersImport implements ToCollection, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function collection(Collection $rows)
    {
         Validator::make($rows->toArray(), [
             '*.name' => 'required',
             '*.email' => 'required',
             '*.password' => 'required',
         ])->validate();
  
        foreach ($rows as $row) {
            User::create([
                'name' => $row['name'],
                'email' => $row['email'],
                'password' => bcrypt($row['password']),
            ]);
        }
    }
  
}

デモcsvファイルはここからダウンロードできます:デモCSVファイル

ステップ5:コントローラーを作成する

このステップでは、このパス「app / Http / Controllers /UserImportController.php」にUserImportControllerとして新しいコントローラーを作成する必要があります。このコントローラーはすべてのインデックスとストアメソッドを管理するため、以下のコンテンツをコントローラーファイルに配置します。

app / Http / Controllers / UserImportController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
  
class UserImportController extends Controller
{
    
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
       return view('import');
    }
     
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function store() 
    {
        Excel::import(new UsersImport,request()->file('file'));
             
        return back()->with('success', 'User Imported Successfully.');
    }
}

ステップ6:ブレードファイルを作成する

最後のステップでは、レイアウト用のimport.blade.php(resources / views / import.blade.php)を作成しましょう。ここにデザインコードを記述し、次のコードを配置します。

resources / views / import.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>How to validate excel sheet data in Laravel - ItSolutionStuff.com</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body>
     
<div class="container">
    <div class="card bg-light mt-3">
  
        <div class="card-header">
            How to validate excel sheet data in Laravel - ItSolutionStuff.com
        </div>
        <div class="card-body">
            <form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
                @csrf
  
                @if (count($errors) > 0)
                <div class="row">
                    <div class="col-md-8 col-md-offset-1">
                      <div class="alert alert-danger alert-dismissible">
                          <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                          <h4><i class="icon fa fa-ban"></i> Error!</h4>
                          @foreach($errors->all() as $error)
                          {{ $error }} <br>
                          @endforeach      
                      </div>
                    </div>
                </div>
                @endif
  
                @if (Session::has('success'))
                    <div class="row">
                      <div class="col-md-8 col-md-offset-1">
                        <div class="alert alert-success alert-dismissible">
                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                            <h5>{!! Session::get('success') !!}</h5>   
                        </div>
                      </div>
                    </div>
                @endif
  
                <input type="file" name="file" class="form-control">
                <br>
                <button class="btn btn-success">Submit</button>
            </form>
        </div>
    </div>
</div>
     
</body>
</html>

これで、laravel8アプリケーションを確認できます。

これで、例を実行する準備ができたので、次のコマンドを実行してください。

php artisan serve

これで、ブラウザで次のURLを開くことができます。

localhost:8000/import

次のようにcsvファイルをアップロードする必要があります。

 

私はそれがあなたを助けることができることを願っています...

 リンク: https://www.itsolutionstuff.com/post/how-to-validate-excel-sheet-data-in-laravelexample.html

#laravel 

What is GEEK

Buddha Community

LaravelでExcelシートデータを検証する方法

LaravelでExcelシートデータを検証する方法

こんにちは開発者、

それでは、laravelでExcelシートデータを検証する方法の記事を見てみましょう。laravelmaatwebsiteのExcelインポート検証についてお見せします。laravelmaatwebsiteの検証例を学びます。LaravelがExcelデータを検証する例を示すお手伝いをします。LaravelのExcelデータを検証する方法を以下の例で見てみましょう。

 

Excelまたはcsvのインポートとエクスポートを行う場合は、常にmaatwebsitecomposerパッケージを使用します。しかし、maatwebsiteパッケージを使用してExcelシートデータを検証する必要があり、わからない場合は、その方法の非常に簡単な例を示します。

 

この例は、laravel 6、laravel 7、laravel8バージョンでも使用できます。次の手順に従って、次のように実行できます。

プレビュー:

 

 

 

ステップ1:Laravel8をインストールする

ここでは、以下のコマンドを使用してLaravelアプリケーションをインストールする必要があるため、ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行します。

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

ステップ2:maatwebsite / excelパッケージをインストールする

このステップでは、Composerパッケージマネージャーを介してmaatwebsite / excelパッケージをインストールする必要があるため、ターミナルを1つ使用して、次のコマンドを実行します。

composer require maatwebsite/excel

次に、config / app.phpファイルを開き、サービスプロバイダーとエイリアスを追加します。

config / app.php

'providers' => [

	....

	Maatwebsite\Excel\ExcelServiceProvider::class,

],

'aliases' => [

	....

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

],

ステップ3:ルートを追加する

このステップでは、インポートエクスポートファイルのルートを作成する必要があります。したがって、「routes / web.php」ファイルを開き、次のルートを追加します。

ルート/web.php

<?php
  
use Illuminate\Support\Facades\Route;
    
use App\Http\Controllers\UserImportController;
  
/*
|--------------------------------------------------------------------------
| 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::get('import', [UserImportController::class, 'index']);
Route::post('import', [UserImportController::class, 'store'])->name('import');

ステップ4:インポートクラスを作成する

maatwebsite 3バージョンでは、インポートクラスを構築する方法が提供されており、コントローラーで使用する必要があります。したがって、新しいImportクラスを作成するのに最適な方法です。したがって、次のコマンドを実行し、そのファイルで次のコードを変更する必要があります。

php artisan make:import UsersImport --model = User

app / Imports / UsersImport.php

<?php
  
namespace App\Imports;
  
use App\Models\User;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Illuminate\Support\Facades\Validator;
  
class UsersImport implements ToCollection, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function collection(Collection $rows)
    {
         Validator::make($rows->toArray(), [
             '*.name' => 'required',
             '*.email' => 'required',
             '*.password' => 'required',
         ])->validate();
  
        foreach ($rows as $row) {
            User::create([
                'name' => $row['name'],
                'email' => $row['email'],
                'password' => bcrypt($row['password']),
            ]);
        }
    }
  
}

デモcsvファイルはここからダウンロードできます:デモCSVファイル

ステップ5:コントローラーを作成する

このステップでは、このパス「app / Http / Controllers /UserImportController.php」にUserImportControllerとして新しいコントローラーを作成する必要があります。このコントローラーはすべてのインデックスとストアメソッドを管理するため、以下のコンテンツをコントローラーファイルに配置します。

app / Http / Controllers / UserImportController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
  
class UserImportController extends Controller
{
    
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
       return view('import');
    }
     
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function store() 
    {
        Excel::import(new UsersImport,request()->file('file'));
             
        return back()->with('success', 'User Imported Successfully.');
    }
}

ステップ6:ブレードファイルを作成する

最後のステップでは、レイアウト用のimport.blade.php(resources / views / import.blade.php)を作成しましょう。ここにデザインコードを記述し、次のコードを配置します。

resources / views / import.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>How to validate excel sheet data in Laravel - ItSolutionStuff.com</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body>
     
<div class="container">
    <div class="card bg-light mt-3">
  
        <div class="card-header">
            How to validate excel sheet data in Laravel - ItSolutionStuff.com
        </div>
        <div class="card-body">
            <form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
                @csrf
  
                @if (count($errors) > 0)
                <div class="row">
                    <div class="col-md-8 col-md-offset-1">
                      <div class="alert alert-danger alert-dismissible">
                          <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                          <h4><i class="icon fa fa-ban"></i> Error!</h4>
                          @foreach($errors->all() as $error)
                          {{ $error }} <br>
                          @endforeach      
                      </div>
                    </div>
                </div>
                @endif
  
                @if (Session::has('success'))
                    <div class="row">
                      <div class="col-md-8 col-md-offset-1">
                        <div class="alert alert-success alert-dismissible">
                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                            <h5>{!! Session::get('success') !!}</h5>   
                        </div>
                      </div>
                    </div>
                @endif
  
                <input type="file" name="file" class="form-control">
                <br>
                <button class="btn btn-success">Submit</button>
            </form>
        </div>
    </div>
</div>
     
</body>
</html>

これで、laravel8アプリケーションを確認できます。

これで、例を実行する準備ができたので、次のコマンドを実行してください。

php artisan serve

これで、ブラウザで次のURLを開くことができます。

localhost:8000/import

次のようにcsvファイルをアップロードする必要があります。

 

私はそれがあなたを助けることができることを願っています...

 リンク: https://www.itsolutionstuff.com/post/how-to-validate-excel-sheet-data-in-laravelexample.html

#laravel