この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:atom
更新日時:2026-06-11 07:07:02

タイトル: CSVのアップロードおよび読み込み(maatwebsite/excel)
SEOタイトル: CSVのアップロードおよび読み込み(maatwebsite/excel)

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<thead>
		<tr><th style="background-color:#f39c12;color:#ffffff;text-align:left">この記事の要点</th></tr>
	</thead>
	<tbody>
		<tr>
			<td style="background-color:#fef9e7">
			<ul>
				<li>Laravel <code>maatwebsite/excel</code> パッケージでの<strong>CSV アップロード・読み込み</strong></li>
				<li>導入: <code>composer require maatwebsite/excel</code></li>
				<li><strong>2.x 系</strong>: <code>Excel::load($file)->get()</code></li>
				<li><strong>3.x 系</strong>: Import クラスを作って <code>Excel::import(new MyImport, $file)</code></li>
			</ul>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>



<p>本稿は<strong>Laravelの「maatwebsite/excel」パッケージを使用したCSVファイルの読み込み方法</strong>を説明します。</p>

<p>&nbsp;</p>

<h2>maatwebsite/excelの導入</h2>

<p>以下のコマンドを実行します。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">composer require "maatwebsite/excel:~2.1.0"</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p><span style="color:#e74c3c">※2018/5/5現在、バージョン3にはインポート機能が無いのでバージョン2にしましょう。</span></p>

<p>&nbsp;</p>

<h2>プロバイダー登録</h2>

<p>「<strong>config/app.php</strong>」にプロバイダーとして追加登録します。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">'providers' => [</span></p>

			<p style="margin-left:40px"><span style="color:#f1c40f">Maatwebsite\Excel\ExcelServiceProvider::class,</span></p>

			<p><span style="color:#ffffff">]</span></p>

			<p><span style="color:#ffffff">...</span></p>

			<p><span style="color:#ffffff">'aliases' => [</span></p>

			<p style="margin-left:40px"><span style="color:#f1c40f">'Excel' => Maatwebsite\Excel\Facades\Excel::class,</span></p>

			<p><span style="color:#ffffff">]</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<h2>CSVの読み込み</h2>

<p>以下はブラウザからCSVのアップロードを想定した実装例です。</p>

<p>&nbsp;</p>

<p><strong>【クライアント側】</strong></p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff"><form method="POST" action="{{ url('...') }}" </span><span style="color:#f1c40f">enctype="multipart/form-data"</span><span style="color:#ffffff">><br />
			&nbsp;&nbsp; &nbsp;<input type="file" name="csv"><br />
			&nbsp; &nbsp; <button type="submit">Submit</button><br />
			</form></span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<p><strong>【サーバー側】</strong></p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#f1c40f">use Excel;</span></p>

			<p><span style="color:#ffffff">...</span></p>

			<p><span style="color:#ffffff">class CsvController extends Controller</span></p>

			<p style="margin-left:40px"><span style="color:#ffffff">public function readCsv(Request $request) {</span></p>

			<p style="margin-left:40px">&nbsp;</p>

			<p style="margin-left:40px"><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; $file = $request->file('file');</span></p>

			<p style="margin-left:40px"><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; $loadedFile = </span><span style="color:#f1c40f">Excel::load</span><span style="color:#ffffff">(<br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $file->getRealPath()<br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ,function($reader){}<br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )->get();</span></p>

			<p style="margin-left:40px"><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; $rows = $loadedFile->toArray();</span></p>

			<p style="margin-left:40px"><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; foreach ($rows as $row){<br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \Log::info('row: ' . var_export($row, true));<br />
			&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
			<span style="color:#ffffff">...</span></p>

			<p style="margin-left:40px"><span style="color:#ffffff">}</span></p>

			<p><span style="color:#ffffff">}</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<p>【出力結果】</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">[2018-05-05 10:47:41] local.INFO: row: array (<br />
			&nbsp; 'header1' => 'val1-1',<br />
			&nbsp; 'header2' => 'val1-2',<br />
			)<br />
			[2018-05-05 10:47:41] local.INFO: row: array (<br />
			&nbsp; 'header1' => 'val2-1',<br />
			&nbsp; 'header2' => 'val2-2',<br />
			)</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>