PHPでCSVエクスポート機能を作る方法
PHPでCSVエクスポート機能を作る方法を紹介します。このサンプルでは、サーバー側で保持しているCSVデータをボタンひとつでエクスポートし、ユーザーのパソコンへダウンロードできます。管理画面からのデータ出力やバックアップ、一覧データの保存などを行いたい場合に利用できます。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
CSVエクスポート
| ID | 名前 |
|---|---|
| 1 | 山田 太郎 |
| 2 | 佐藤 花子 |
| 3 | 鈴木 一郎 |
コードをコピーして使おう!
<?php
// CSVファイル名です
$csv_file = 'data.csv';
// エクスポートボタンが押された場合の処理です
if (isset($_GET['export'])) {
// CSVファイルが存在するか確認します
if (file_exists($csv_file)) {
// ダウンロード用のHTTPヘッダーを送信します
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="export.csv"');
header('Content-Length: ' . filesize($csv_file));
// CSVファイルを出力します
readfile($csv_file);
exit;
}
}
// CSVデータを読み込む関数です
function load_csv_data($csv_file) {
$rows = [];
if (!file_exists($csv_file)) {
return $rows;
}
$fp = fopen($csv_file, 'r');
if ($fp) {
while (($data = fgetcsv($fp)) !== false) {
$rows[] = $data;
}
fclose($fp);
}
return $rows;
}
// 画面表示用にCSVを読み込みます
$rows = load_csv_data($csv_file);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSVエクスポート</title>
<style>
body{
font-family:sans-serif;
background:#f8fafc;
margin:40px;
}
.php-csv-export_wrap{
max-width:700px;
margin:0 auto;
padding:24px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#ffffff;
}
.php-csv-export_title{
font-size:22px;
font-weight:bold;
margin-bottom:20px;
}
.php-csv-export_table{
width:100%;
border-collapse:collapse;
margin-bottom:20px;
}
.php-csv-export_table th,
.php-csv-export_table td{
border:1px solid #d1d5db;
padding:10px;
text-align:left;
}
.php-csv-export_table th{
background:#f1f5f9;
}
.php-csv-export_button{
display:block;
width:100%;
height:46px;
line-height:46px;
text-align:center;
text-decoration:none;
border-radius:10px;
background:#0b6bff;
color:#ffffff;
font-weight:bold;
}
</style>
</head>
<body>
<div class="php-csv-export_wrap">
<div class="php-csv-export_title">
CSVエクスポート
</div>
<table class="php-csv-export_table">
<?php foreach ($rows as $index => $row): ?>
<tr>
<?php foreach ($row as $cell): ?>
<?php if ($index === 0): ?>
<th><?= htmlspecialchars($cell, ENT_QUOTES, 'UTF-8') ?></th>
<?php else: ?>
<td><?= htmlspecialchars($cell, ENT_QUOTES, 'UTF-8') ?></td>
<?php endif; ?>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>
<a class="php-csv-export_button" href="?export=1">
CSVをエクスポートする
</a>
</div>
</body>
</html>
ファイル構成と設置方法
このサンプルでは、index.php と data.csv を同じフォルダに配置して使用します。画面に表示しているCSVデータを、そのままエクスポートしてダウンロードできます。
sample/
├── index.php
└── data.csv
index.php と data.csv を同じフォルダへ配置し、ブラウザから index.php にアクセスしてください。画面下部の「CSVをエクスポートする」ボタンをクリックすると、data.csv の内容が export.csv としてダウンロードされます。
コメント