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で確認・管理したい場合に使用できます。


