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

php

PHPでCSVインポート機能を作る方法

PHPでCSVインポート機能を作る方法を紹介します。このサンプルでは、ユーザーが選択したCSVファイルをサーバーへアップロードし、データを読み込んで取り込むことができます。管理画面への一括データ登録や商品情報の取り込み、会員情報の移行などを行いたい場合に利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

CSVインポート

コードをコピーして使おう!

<?php

$message = '';

// インポートしたCSVは元のファイル名で保存します
$save_file = '';

// フォーム送信時の処理です
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    // CSVファイルが選択されているか確認します
    if (
        isset($_FILES['csv_file']) &&
        $_FILES['csv_file']['error'] === UPLOAD_ERR_OK
    ) {

        // アップロードされたファイル名を取得します
        $file_name = basename($_FILES['csv_file']['name']);

        // 拡張子を取得します
        $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

        // CSVファイルかどうかを確認します
        if ($extension === 'csv') {

            // アップロードされたCSVを元のファイル名で保存します
            $save_file = $file_name;

            if (move_uploaded_file($_FILES['csv_file']['tmp_name'], $save_file)) {

                $message = $file_name . ' をインポートしました。';

            } else {

                $message = 'CSVファイルのインポートに失敗しました。';

            }

        } else {

            $message = 'CSVファイルを選択してください。';

        }

    } else {

        $message = 'CSVファイルを選択してください。';

    }

}

?>

<!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-import_wrap{
    max-width:700px;
    margin:0 auto;
    padding:24px;
    border:1px solid #e5e7eb;
    border-radius:18px;
    background:#ffffff;
}

.php-csv-import_title{
    font-size:22px;
    font-weight:bold;
    margin-bottom:20px;
}

.php-csv-import_file{
    width:100%;
    margin-bottom:16px;
}

.php-csv-import_button{
    width:100%;
    height:46px;
    border:none;
    border-radius:10px;
    background:#0b6bff;
    color:#ffffff;
    font-weight:bold;
    cursor:pointer;
}

.php-csv-import_result{
    margin-top:16px;
    padding:14px;
    border:1px solid #bbf7d0;
    border-radius:12px;
    background:#f0fdf4;
    color:#15803d;
}
</style>

</head>
<body>

<div class="php-csv-import_wrap">

    <div class="php-csv-import_title">
        CSVインポート
    </div>

    <form method="post" enctype="multipart/form-data">

        <input
            class="php-csv-import_file"
            type="file"
            name="csv_file"
            accept=".csv"
        >

        <button class="php-csv-import_button" type="submit">
            CSVをインポートする
        </button>

    </form>

    <?php if ($message !== ''): ?>

        <div class="php-csv-import_result">
            <?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?>
        </div>

    <?php endif; ?>

</div>

</body>
</html>

ファイル構成と設置方法

このサンプルでは、index.php を配置するだけで利用できます。ユーザーが選択したCSVファイルは、元のファイル名のまま index.php と同じフォルダへ保存されます。

sample/
└── index.php
(CSVインポート後の例)

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

index.php をサーバーへアップロードし、ブラウザからアクセスしてください。CSVファイルを選択して「CSVをインポートする」をクリックすると、選択したCSVファイルが元のファイル名のままサーバーへ保存されます。同じ名前のCSVファイルが存在する場合は上書きされます。


コメント