Text::CSV_XSで、CSVを出力。
2011年2月16日
CSVでダウンロードする機能を作ることがたまにあるけど、毎回調べるのが無駄なのでメモ。
Text::CSV_XS使うと、CSVファイルを読み込んでparseみたいな事を簡単にできるんですが、DBとかに入ってるデータをCSVで出力したいだけなので、割愛。
use Text::CSV_XS; my @data = ('あ','い','う'); my $tc = Text::CSV_XS->new({binary=>1}); # binary=>1は日本語使うなら入れとく $tc->combine(@data); my $csv = $tc->string(); print "Content-type: application/octet-stream\n"; print 'Content-Disposition: attachment; filename="data.csv"' . "\n\n"; print $csv;
実際は1行じゃないから、ループしますけど。
あとContent-typeは正解が不明。。
Content-type: application/octet-stream Content-type: application/x-csv Content-type: text/csv
↑辺りで動くらしい・・。