Laravel7 EXCELファイルを読み込んで表示する
Laravel7でEXCELファイルを読み込んで表示するまでの簡単なサンプルコードを記述してます。ここではphpspreadsheetを利用してEXCELファイルを読み込みます。
環境
- OS windows10 pro 64bit
- Composer 1.10.5
- PHP 7.4.5
- Laravel Framework 7.6.2
EXCELファイル
下記のEXCELファイルを「storage\app」配下に用意してます。
bootstrap導入
UIに利用しているだけです。
詳しい手順はこちらに記述してますが、下記のコマンドで利用可能になります。
composer require laravel/ui
php artisan ui bootstrap
npm install && npm run dev
phpspreadsheet導入
下記のコマンドで導入します。
composer require phpoffice/phpspreadsheet
コントローラー作成
ファイルをアップロードするためのコントローラーを作成します。
php artisan make:controller ImportController
app\Http\Controllers\ImportControllerが作成されるので、下記の通りに編集します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
class ImportController extends Controller
{
public function read() {
$reader = new Xlsx();
//EXCELファイル読み込み(PATHはEXCLEファイルがある場所を指定)
$spreadsheet = $reader->load("C:\Apache24\htdocs\sample\storage\app\Book1.xlsx");
// 第1引数 セルに値が無い時に値を指定
// 第2引数 trueを指定するとセル内の計算結果を返して、falseなら計算式が表示される
// 第3引数 各セルのフォーマットを利用するかしないか
// 第4引数 trueだと、A1形式がキーになった配列。falseだと0から始まる数字がキーなった配列
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, false, true);
return view('import.read')->with('sheets', $sheetData);
}
}
ルーティング追加
アクセスするURLを設定するため、ルーティングを記述します。
routes\web.phpに下記を追加します。
Route::get('import/read', 'ImportController@read');
ビュー作成
次にレイアウト部であるviewを作成します。
resources\views内で「import」というフォルダを作成して、フォルダ内に「read.blade.php」を下記の内容で、新たに作成します。
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- bootstrap -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div class="vh-100 d-flex justify-content-center text-center">
<div class="content">
<div>
<div class="row">
<table class="table">
<thead>
<tr>
<th scope="col">A列</th>
<th scope="col">B列</th>
<th scope="col">C列</th>
</tr>
</thead>
<tbody>
@foreach($sheets as $sheet)
<tr>
<td>{{ $sheet['A'] }}</td>
<td>{{ $sheet['B'] }}</td>
<td>{{ $sheet['C'] }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
実行
実行します。
php artisan serve --host 0.0.0.0
ブラウザから http://プライベートIP:8000/import/show にアクセスするとEXCELファイルの内容が表示されていることが確認できます。
-
前の記事
php 配列内にある重複しているデータを削除する 2020.08.21
-
次の記事
React.js ライブラリ「react-barcode」をインストールしてバーコードを生成する 2020.08.21
コメントを書く