PHPでCSVファイルを出力する方法

PHPでは、データベースから取得したデータをCSVファイルにしてダウンロードすることができます。

CSVファイルは、データをカンマ(,)で区切って保存するファイルです。

例えば、システムで検索した顧客リスト、注文リスト、案件リストなどをCSVファイルで出力する場合に使用できます。

サンプルコード

<?php

$title = "整理番号,依頼者,相手方,事件名\n";

$csv = mb_convert_encoding(
$title,
'CP932',
'UTF-8'
);

$dataList = [
['A001', '山田太郎', '鈴木一郎', '相談'],
['A002', '佐藤花子', '田中次郎', '契約']
];

foreach ($dataList as $values) {

$line = "";

foreach ($values as $key => $value) {

if ($key > 0) {
$line .= ",";
}

$line .= mb_convert_encoding(
$value,
'CP932',
'UTF-8'
);
}

$csv .= $line . "\n";
}

$filename = "list_" . date('YmdHis') . ".csv";

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename");

echo $csv;

?>

コード説明

まず、CSVファイルのタイトルを作成します。

$title = "整理番号,依頼者,相手方,事件名\n";

日本語が入っているCSVファイルをExcelで開いたときに文字化けしないように、文字コードを変更します。

$csv = mb_convert_encoding($title, 'CP932', 'UTF-8');

次に、foreachを使ってデータを1件ずつ処理します。

foreach ($dataList as $values) {    // データをCSVに追加}

データとデータの間にはカンマ(,)を追加します。

$line .= ",";

1行のデータが終わったら改行を追加します。

$csv .= $line . "\n";

次に、ダウンロードするCSVファイルの名前を作成します。

$filename = "list_" . date('YmdHis') . ".csv";

最後にヘッダーを設定して、CSVデータを出力します。

header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=$filename");echo $csv;

まとめ

PHPでは、データベースから取得したデータをCSV形式にしてダウンロードできます。

基本的な流れは、

データ取得 → CSV形式にする → 文字コードを変更 → ファイル名を設定 → CSVをダウンロード

となります。

顧客リスト、注文リスト、売上リストなど、システムのデータをExcelで確認・管理したい場合に使用できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です