出力

出力

データをCSVファイルとしてダウンロードする

  • このエントリーをはてなブックマークに追加

取得したデータをCSVファイル形式でダウンロードする方法を解説します。

この記事のポイント

  • データをCSV形式でファイル出力する方法が分かる
  • header関数の使い方が分かる

目次

概要

次のような流れでCSVファイルを生成し、ダウンロードすることのできる形で作成します。

CSVファイルをダウンロードするまでの流れ

(1)の「Download」リンクが設定されたページと、(2)のCSVファイルを生成するPHPは別ファイルとして作成します。
今回は仮に、(1)のHTMLページを「index.html」、(2)のPHPを「csv.php」としましょう。

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSV Download</title>	
</head>
<body>
	<h1>CSV Download</h1>
	<p><a href="csv.php">Download</a></p>
</body>
</html>

csv.php

<?php

// 出力情報の設定
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=GRAYCODE.csv");
header("Content-Transfer-Encoding: binary");

// 変数の初期化
$member = array();
$csv = null;

// 出力したいデータのサンプル
$member = array(
	array(
		'id' => 1,
		'name' => '山田太郎',
		'furigana' => 'やまだたろう',
		'email' => 'taroyamada@sample.com'
	),
	array(
		'id' => 3,
		'name' => '加藤明美',
		'furigana' => 'かとうあけみ',
		'email' => 'akemikato@sample.com'
	),
	array(
		'id' => 5,
		'name' => '佐藤健夫',
		'furigana' => 'さとうたけお',
		'email' => 'takeosato@sample.com'
	)
);

// 1行目のラベルを作成
$csv = '"ID","氏名","ふりがな","メールアドレス"' . "\n";

// 出力データ生成
foreach( $member as $value ) {
	$csv .= '"' . $value['id'] . '","' . $value['name'] . '", "' . $value['furigana'] . '","' . $value['email'] . '"' . "\n";
}

// CSVファイル出力
echo $csv;
return;

実行結果

出力されたCSVファイル

出力されたCSVファイルは、ExcelやNumbersなどの表計算ソフトで開いて閲覧、編集することが可能です。

Numbersでファイルを開いた表示例

解説

// 出力情報の設定」の3行のheader関数では、PHPの出力形式を指定しています。
ここでCSVファイルとして出力するための指定を行なっているので、「csv.php」は通常のブラウザで閲覧できるページとしては出力されません。

2行目のheader関数の中に「filename=GRAYCODE.csv」と記述がありますが、ここで出力するファイル名を指定することができます。

例えば、ファイル名を日本語で「商品リスト.csv」としたい場合は「filename=商品リスト.csv」となります。

出力するデータを取得

今回は「// 出力したいデータのサンプル」の箇所で適当な出力データを作成していますが、実際はデータベースからデータを取得するコードが入ります。

項目ラベルを作成

// 1行目のラベルを作成」の箇所では、出力データの項目名を設定しています。
CSVファイルの使用ケースによっては不要な場合もあります。

変数$csvには出力したい内容が全て入ります。

出力データを生成

// 出力データ生成」が、肝心な出力内容を設定している箇所です。
今回は3名分のデータが入るだけなので、3回ループが実行される処理になります。

CSVのデータはそれぞれ「(ダブルクォーテーション)」で囲い、「,(半角コンマ)」でデータを区切ります。

次の行へ進みたい場合は通常のテキストと同様に改行を入れます。
改行コード「\n」を行末に入れてあげましょう。
改行コードは「(シングルクォーテーション)」で囲むとプレーンテキストになってしまうため、必ず「」で囲ってあげる必要があることに注意してください。

出力する

最後から2行目の「echo $csv;」部分でファイル出力を実行し、「return;」で処理を終了します。

今回は最低限CSVファイルを出力するのに必要なコードのみを紹介していますが、実際にはWindowsのExcelで開いたりするために文字コードを調整する必要があります。
文字コードの調整については別記事「はしご高などの旧字体漢字の文字化けを防ぐ」を確認してください。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。

  • このエントリーをはてなブックマークに追加
前のページへ 一覧ページへ一覧 次のページへ