ZendFramework CSVダウンロード

覚書 IEもろもろ対応
[2009.10.06追記]おっきいファイルの出力対応してみた
‘※動作保証しません。’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* CSV出力アクション
*/
public function outputcsvAction()
{
// レンダリングを停止する
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
// ファイル名の設定
$file_name = 'hogehoge.csv';
// IE対応含め、ヘッダーの設定
$this->getResponse()->setHeader("Cache-Control", "public", true);
$this->getResponse()->setHeader("Pragma", "", true);
$this->getResponse()->setHeader("Content-type","text/csv");
$this->getResponse()->setHeader("Content-Disposition","attachment; filename=$file_name");
// ヘッダーの送信
if ($this->getResponse()->canSendHeaders())
{
$this->getResponse()->sendHeaders();
$this->getResponse()->clearAllHeaders();
}
// ダミーデータ
$rows = array(
array('column1', 'column2', 'column3', 'column4')
, array('column1', 'column2', 'column3', 'column4')
, array('column1', 'column2', 'column3', 'column4')
);
// CSVの出力
echo mb_convert_encoding('column1,column2,column3,column4', 'SJIS-win', 'UTF-8');
foreach ($rows as $row)
{
// 出力データの生成
$output = '"' . implode('","', $row) . '"' . "\r\n";;
$output = mb_convert_encoding($output, 'SJIS-win', 'UTF-8');
// フラーーーーーーーーーーーーシュ!!!
flush();
ob_flush();
echo $output;
}
}