Laravel 10でCSV import機能の実装方法

こんにちは! とびろぐ管理人のとびうおです!

今回は、laravel 10におけるcsvインポート機能の作成の方法について解説してきます!

今回は、PHP Spreadsheet というのを使って、インポートを行っていきたいと思います!

WEBアプリケーションポートフォリオの作り方:トビログ
学生・初心者でも簡単! LaravelとXserverで自分のアプリケーションを月額500円で作成しよう! Laravel 10とXserverのVPSを用いて学生でも簡単にWebアプリケーションポートフォリオを作成できるようになります。 Laravelの使い方から、Xserverでのデプロイまでを初心者でも簡単にわか...
とびうおくん
とびうおくん

Laravelでwebポートフォリオを簡単に作れるようになる本を出しました

PHP Spreadsheetのインストール

まずは、PHP Spreadsheetをプロジェクトに対してインストールします。

composer を使用して、以下のコマンドを実行してみてください。

composer require phpoffice/phpspreadsheet

// sailを使用している場合↓↓
./vendor/bin/sail composer require phpoffice/phpspreadsheet
とびうお
とびうお

PHP Spreadsheetは
とても便利なライブラリだよ!

controllerを準備しよう

次に、csvインポートの処理を行うcontrollerを準備します。

以下のようなartisanコマンドを打って、controllerを準備してみてください!

php artisan make:controller CsvImportController

// sailを使用している場合↓↓
./vendor/bin/sail composer require phpoffice/phpspreadsheet
とびうお
とびうお

Laravel 10ではsailを使って

環境構築を行なっている人も多いので、

sailのバージョンも追加しておいたよ!

ルーティングの設定

続いて、web.phpにcsvインポート用のルートを追加します。

use App\Http\Controllers\CsvImportController;

Route::get('/import-csv', [CsvImportController::class,"show"]);
Route::post('/import-csv',  [CsvImportController::class,"import"]);

csvアップロードのフォームの作成

続いて、bladeを用いて、csvファイルのアップロードフォームを作成しましょう。

<!doctype html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<form action="/import-csv" method="post" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file">
    <button type="submit">インポート</button>
</form>

</body>
</html>
Laravel 10でCSV import機能の実装方法
とびうお
とびうお

上記のフォームが表示されていれば
OKだよ!

この時form属性にenctype="multipart/form-data"を追加するのを忘れないようにしましょう。

csv import部分のcontroller

csv import部分のcontrollerは以下のようにすればOKです!

 public function import(Request $request)
    {
        $file = $request->file('file');
        $spreadsheet = IOFactory::load($file->getPathName());
        $sheetData = $spreadsheet->getActiveSheet()->toArray();

        foreach ($sheetData as $row) {
            echo implode(', ', $row) . "<br>";
        }
    }

このように記述しましょう。

そうして、csvをアップロードすると、

Laravel 10でCSV import機能の実装方法

このように無事、表示されます!

例のcsvはこちら↓↓

とびうお
とびうお

echoしているところを
DBに保存するコードに書き換えてみたりしよう!

PHP Spreadsheetの便利なところ

PHP Spreadsheetの便利なところは、

        $spreadsheet = IOFactory::load($file->getPathName());

といったところで、$spreadsheetをオブジェクトのように扱えるところです。

$spreadsheet オブジェクトを使うことで、シートの読み込みや書き込みなどが簡単にできます。

とびうお
とびうお

自分で関数を調べてみるとやれる幅が広がるよ!

PhpSpreadsheet Documentation
None

おわりに

Laravel 10を使用したcsv importの方法についての解説でした。PHP Spreadsheetは大変便利なので、ぜひ使ってみてくださいね!

とびうお
とびうお

よい、Laravelライフを!

トビログにはこの他にもたくさんLaravelの記事があります!

ぜひチェックしてみてください↓↓

Laravel
「Laravel」の記事一覧です。
とびうお
ブログ管理人です!
swimaneというアプリをリリースしました!

コメント

タイトルとURLをコピーしました