PHPでCSVエクスポート機能を作る方法【サンプルコード付き】

php

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.phpdata.csv を同じフォルダに配置して使用します。画面に表示しているCSVデータを、そのままエクスポートしてダウンロードできます。

sample/
├── index.php
└── data.csv
  

index.phpdata.csv を同じフォルダへ配置し、ブラウザから index.php にアクセスしてください。画面下部の「CSVをエクスポートする」ボタンをクリックすると、data.csv の内容が export.csv としてダウンロードされます。


コメント