どのようにインポートしたり、エクスポートしてCrav


インポートは、CSVファイルdiララエル- Hi - coderrs、このポストでは、私はデータベースにCSVファイルからデータをインポートし、Ravavel ExcelパッケージでRavavel ExcelパッケージでCSV形式にデータをエクスポートする方法についてのチュートリアルを共有します.

どのようにエクスポートCSVをインポートするにはLavavel 8 ?
RAVAVEL 8では、CSV形式のファイルまたはCSV形式でエクスポートデータにファイルからデータをインポートする機能を作るために、我々はLaravel Excelパッケージを使用することができます.以下、実施の形態について説明する.

インポートCSV
OK、私たちが作成した最初の機能は、データベース内のユーザーテーブルにCSV形式のファイルからデータをインポートする機能です.LaraVel 8でCSVインポート機能を作成する手順を以下に示します.
  • ステップ1:ララベルをインストールする
  • //via Laravel Installer
    composer global require laravel/installer
    laravel new laravel-csv
    
    //via Composer
    composer create-project laravel/laravel laravel-csv
    
    この最初のステップでは、LaraVel(最新バージョン8)の最新バージョンをインストールする必要があります.Laravelをインストールするには、Rolavelインストーラを使用したり、上記の例のように作曲家を使用できます.
    LaRavelのインストールに使用する1つの方法を選択してください.上記のlaravelのインストールコマンドの2つの例から、それらはlarlarel csvという名前のlaravelプロジェクトを生成または生成します.
    インストールプロセスが完了するまで待ちます、そして、それが終わったとき、コマンドCD laravel csvを使っているプロジェクトディレクトリに行くのを忘れないでください.
  • ステップ2 :セットアップデータベース
  • DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=laravel_csv
    DB_USERNAME=root
    DB_PASSWORD=
    
    次に、この実験で使用するサンプルデータを格納する新しいデータベースを作成します.XAMPPをローカル開発として使用している場合は、localhost/phpMyAdminで新しいデータベースを作成してください.ここでは、私は例を与える、私は名前ララベラルcsvと新しいデータベースを作成しました.そして、DBRUNデータベースを調整するのを忘れないでください.上の例ではenvファイルも同様です.を実行し、すべての移行ファイルをデータベースに移行するには、PHP Artisan migrateコマンドを実行します.
  • Step 3 : Lavavel Excelパッケージをインストールする
  • composer require maatwebsite/excel
    
    上記のように、作曲者コマンドを実行して、Rolavel Excelパッケージをインストールします.
    php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
    
    設定ファイルを公開するには、上記のベンダー発行コマンドを実行します.このコマンドを実行すると、config/excelに名前を付けられた新しい設定ファイルが作成されます.PHPディレクトリ.
  • ステップ4:インポートクラスを作成する
  • php artisan make:import UsersImport --model=User
    
    我々は、最初にユーザーテーブルにCSVデータをインポートする機能を作成します.インポートファイルを準備しましょう.上記のアーティシャンコマンドを実行して、usersimportを生成してください.PHPファイル.アーティシャンコマンドが実行された場合、usersimport.PHPファイルはapp/importディレクトリにあります.
    <?php
    
    namespace App\Imports;
    
    use App\Models\User;
    use Maatwebsite\Excel\Concerns\ToModel;
    use Maatwebsite\Excel\Concerns\WithStartRow;
    use Maatwebsite\Excel\Concerns\WithCustomCsvSettings;
    
    class UsersImport implements ToModel, WithStartRow, WithCustomCsvSettings
    {
        public function startRow(): int
        {
            return 2;
        }
    
        public function getCsvSettings(): array
        {
            return [
                'delimiter' => ';'
            ];
        }
        /**
        * @param array $row
        *
        * @return \Illuminate\Database\Eloquent\Model|null
        */
        public function model(array $row)
        {
            return new User([
               'name'     => $row[0],
               'email'    => $row[1],
               'password' => \Hash::make($row[2]),
            ]);
        }
    } 
    
    そして、生成されたファイルやapp/http/import/usersimportを開きます.PHPと既存のコードを上記のコードのように変更します.上のコードでは、2番目の行から始まるユーザーテーブルのみのデータに入力されるデータを設定するのに役立つstartrow関数があります.それで、通常見出しを含む最初の線はスキップされます.
    次に、関数モデルでは、行0からのデータを名前フィールドに入力し、行1からのデータを電子メールフィールドに入力し、行2の値をハッシュ形式でパスワードフィールドに入力します.
  • ステップ5:ルートと論理をつくってください
  • <?php
    
    use Illuminate\Support\Facades\Route;
    use Maatwebsite\Excel\Facades\Excel;
    use App\Imports\UsersImport;
    ....
    ....
    ...
    ....
    
    Route::get('/', function () {
    
        return view('welcome',[
            'users' => App\Models\User::all()
        ]);
    });
    
    Route::post('import', function () {
        Excel::import(new UsersImport, request()->file('file'));
        return redirect()->back()->with('success','Data Imported Successfully');
    });
    
    次に、Laravel Defaultによって提供されたルートを変更し、ポストルートを追加してCSV形式でファイルまたはユーザーデータをインポートします.今のところ、ルート/ウェブのコード.PHPは上記のコードのようになります.
  • ステップ6 :セットアップビュー
  • <!doctype html>
    <html lang="en">
      <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    
        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    
        <title>Import & Export CSV in Laravel 8</title>
      </head>
      <body>
       <div class="container my-5">
           <h1 class="fs-5 fw-bold text-center">Import & Export CSV in Laravel 8</h1>
           <div class="row">
               <div class="d-flex my-2">
                   <a href="" class="btn btn-primary me-1">Export Data</a>
                   <button type="button" class="btn btn-success" data-bs-toggle="modal" data-bs-target="#exampleModal">
                    Import Data
                    </button>
               </div>
               @if (session('success'))
                    <div class="alert alert-success alert-dismissible fade show" role="alert">
                    {{ session('success') }}
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                    </div>
               @endif
                <table class="table">
                    <thead>
                        <tr>
                        <th scope="col">#</th>
                        <th scope="col">Name</th>
                        <th scope="col">Email</th>
                        </tr>
                    </thead>
                    <tbody>
                    @foreach ($users as $key => $item)
                        <tr>
                            <th scope="row">{{ ++$key }}</th>
                            <td>{{ $item->name }}</td>
                            <td>{{ $item->email }}</td>
                        </tr>
                    @endforeach
                    </tbody>
                </table>
           </div>
       </div>
    
        <!-- Modal -->
        <div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Import CSV</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <form action="import" method="POST" enctype="multipart/form-data">
                        @csrf
                        <div class="input-group mb-3">
                            <input type="file" name="file" class="form-control">
                            <button class="btn btn-primary" type="submit">Submit</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
    
      </body>
    </html>
    
    
    その後、歓迎を開きます.ブレード.上記のコードのように既存のコードを変更します.この歓迎で.ブレード.PHPファイルは、ブートストラップ5を使用し、コンポーネントテーブルと2つのボタン、すなわちエクスポートとインポートを追加します.
  • ステップ7:インポートCSV試験
  • さて、Laravelをインストールしてからのプロセスを経て、Laravel Excelパッケージをインストールして、usersimportを生成します.PHPファイル、およびビューを設定すると、我々が作成したCSVインポート機能をテストするための時間です.LaVAVel 8でCSVインポートをテストする際に使用するサンプルCSVファイルをダウンロードしてください.
    📁 Sample File CSV

    次に、PHPのアーティサーブを実行して、Laravelプロジェクトを実行します.127.0.0.1 : 8000またはlaravel csvのようなURLを持つブラウザでLaravelプロジェクトを開きます.テスト.インポートデータボタンをクリックし、CSVファイルを選択し、[ Submit ]をクリックします.次に、CSVファイルからのデータは、データベースまたはユーザーテーブルに移動し、データは、上記のようにビューに表示されます.
    どのような場合は、ストレージ内のCSVファイルを保存したいですか?
    Route::post('import', function () {
    
        $fileName = time().'_'.request()->file->getClientOriginalName();
        request()->file('file')->storeAs('reports', $fileName, 'public');
    
        Excel::import(new UsersImport, request()->file('file'));
        return redirect()->back()->with('success','Data Imported Successfully');
    });
    
    CSV形式のファイルからデータベースにデータをインポートするときにCSVファイルを保存するには、上記のコードを追加できます.このコードで、インポートされたCSVファイルは、ストレージ/app/public/reportディレクトリに保存されます.

    エクスポート
    次に、我々は、CSV形式にユーザーテーブルからデータをエクスポートする機能です.ハウ?以下の簡単な説明を参照ください.
  • ステップ1 :エクスポートクラスを作成する
    PHP Artisan make :エクスポートします
    まず、上記のようにArtisanコマンドを使用して最初にエクスポートファイルを生成します.このコマンドを使用すると、usersexportという名前のファイルが作成されます.app/exportsディレクトリにあるPHP.
  • <?php
    
    namespace App\Exports;
    
    use App\Models\User;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use Maatwebsite\Excel\Concerns\WithCustomCsvSettings;
    use Maatwebsite\Excel\Concerns\WithHeadings;
    
    class UsersExport implements FromCollection, WithCustomCsvSettings, WithHeadings
    {
        public function getCsvSettings(): array
        {
            return [
                'delimiter' => ';'
            ];
        }
    
        public function headings(): array
        {
            return ["Name", "Email"];
        }
    
        /**
        * @return \Illuminate\Support\Collection
        */
        public function collection()
        {
            return User::select('name','email')->get();
        }
    } 
    
    次に、userSexportを開きます.上記のコードのようにコードが正常に生成され、変更または調整されたPHPファイル.上のコードでは、セミコロン文字(*)でCSVファイルに区切り文字またはデータ区切り文字を使用します.その後、我々はまた、2つのテキスト、すなわち名前と電子メールでCSVファイル(出力またはエクスポート)で見出しを追加します.そして、私たちは、名前と電子メール分野のデータであるCSVファイルに輸出されるデータを選びます.
    'enclosure'  => '"',
    
    次に、config/excelにある設定ファイルを開きます.PHPディレクトリ.次に、上記のようにExClousureコードを探して、次に下のようなものに変更します.
     'enclosure' => '',
    
  • ステップ2:ルートを加えてください
  • Route::get('export-csv', function () {
        return Excel::download(new UsersExport, 'users.csv');
    });
    
    次に、CSVファイルをダウンロードしてCSVファイルをダウンロードしてusersexportファイルから出力ファイル名のユーザーを追加します.CSV我々は、このデータを後で表示するか、より正確にエクスポートデータボタンで呼び出します.
  • ステップ3:セットアップ表示
  • <a href="" class="btn btn-primary me-1">Export Data</a>
    
    さて、今歓迎を開きます.ブレード.PHPファイル.上のコードのようなエクスポートデータボタンコードを探してください.
    <a href="export-csv" target="_blank" class="btn btn-primary me-1">Export Data</a>
    
    ここでは、変更またはエクスポートCSVルートへのリンクを追加します.
  • ステップ4:エクスポートCSV試験
  • さて、今では2番目のテストのための時間ですか、我々はRolaVel 8で作ったCSVエクスポート機能をテストします.CSVエクスポート機能をテストするには、ユーザーテーブルがデータで満たされているか、前の手順でCSVデータをインポートしていることを確認します.ユーザーテーブルがデータで満たされるならば、我々はすぐに輸出データボタンをクリックすることができます.
    終わり.

    結論
    この記事では、私たちはどのようにエクスポートまたはインポートのデータ機能を作成する方法を学んだCSV形式では、LALAVEL 8.Laravel Excelパッケージを使用すると、簡単にCravエクスポートまたはインポート機能を作成することができます.だけでなく、CSV、ララヴィルのExcelパッケージを使用すると、また、XLSX、TSV、PDFなどの他のファイル形式を使用することができます.我々は、下記のリンクで公式ウェブサイトのパッケージを調査することができます.
    📓 Full Documentation: Laravel Excel
    Codelapanを訪れ、web developmentについて他の記事を見つける.