PHPでCSVダウンロード機能を作る方法
PHPでCSVファイルをダウンロードする機能を作る方法を紹介します。ボタンをクリックするとサーバー上のCSVファイルをそのままダウンロードできるため、登録データのバックアップやデータ配布に利用できます。データベースを使わずにCSVファイルを配布したい場合に使えるサンプルコードです。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
下のボタンをクリックすると、表示中のCSVデータをダウンロードできます。
| 名前 | カテゴリー | メールアドレス |
|---|---|---|
| 山田 太郎 | 営業 | taro@example.com |
| 佐藤 花子 | 企画 | hanako@example.com |
| 鈴木 一郎 | 開発 | ichiro@example.com |
コードをコピーして使おう!
<?php
$file = 'data.csv';
if (isset($_GET['download'])) {
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="data.csv"');
readfile($file);
exit;
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSVダウンロード</title>
<style>
body{
font-family:sans-serif;
margin:20px;
}
.download-wrap{
border:1px solid #e5e7eb;
border-radius:20px;
padding:24px;
margin-bottom:24px;
}
.download-btn{
display:inline-block;
background:#ff6a00;
color:#fff;
text-decoration:none;
padding:14px 24px;
border-radius:10px;
font-weight:700;
}
.table-wrap{
border:1px solid #e5e7eb;
border-radius:20px;
overflow:hidden;
}
table{
width:100%;
border-collapse:collapse;
}
th{
background:#f7f2e5;
}
th,
td{
padding:16px;
text-align:left;
border-bottom:1px solid #e5e7eb;
}
</style>
</head>
<body>
<div class="download-wrap">
<p>
CSVファイルをダウンロードできます。
</p>
<a
href="?download=1"
class="download-btn">
CSVをダウンロード
</a>
</div>
<div class="table-wrap">
<table>
<tr>
<th>名前</th>
<th>カテゴリー</th>
<th>メールアドレス</th>
</tr>
<?php
if (($fp = fopen($file, 'r')) !== false) {
while (($row = fgetcsv($fp)) !== false) {
echo '<tr>';
echo '<td>'.htmlspecialchars($row[0] ?? '').'</td>';
echo '<td>'.htmlspecialchars($row[1] ?? '').'</td>';
echo '<td>'.htmlspecialchars($row[2] ?? '').'</td>';
echo '</tr>';
}
fclose($fp);
}
?>
</table>
</div>
</body>
</html>
ファイル構成と設置方法
このサンプルで使用するファイル構成です。
下記のファイルを同じフォルダ(同じ階層)へ配置してください。
sample/
├─ index.php
└─ data.csv
index.php がCSVダウンロード機能本体です。data.csv に保存されたデータをブラウザからダウンロードできます。
サーバーへ設置する場合は、上記ファイルを同じフォルダ(同じ階層)へアップロードしてください。別フォルダへ配置する場合は、コード内のCSVファイルパスを変更してください。
PHPはサーバー上で実行されるため、PHPファイルをダブルクリックしても動作しません。動作確認はレンタルサーバーへアップロードするか、PHPが利用できるローカル環境で行ってください。
コメント