PHPでCSVダウンロード機能を作る方法【サンプルコード付き】

php

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が利用できるローカル環境で行ってください。


コメント