徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2008年 6月
« 5月   7月 »
1234567
891011121314
15161718192021
22232425262728
2930  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2008年6月27日(金曜日)

RoRからCSV書き出しを試す

カテゴリー: - flyman @ 21時08分10秒

Rails (ruby)でCSVファイル書き出しは遅いらしい。大量のデータを書き出すには、SQL書くのがベター、でも、データ量が少なければ、そんなの関係ねぇ。

FasterCSVなるモジュールが早くて良いらしいが、私はmasuidrive on railsを参考にして、というか、殆どそのままパクッて、標準のCSVモジュールで実現した。

ApplicationController の先頭で

require 'csv'

して、CSV書き出しメソッドを追加する。

 def csv
  report = ''
  CSV::Writer.generate(report, ',') do |csv|
   csv < < ['項目1', '項目2', '項目3']
   Mydata.find(:all).each do |mydatas|
    csv << [mydatas.field1, mydatas.field2, mydatas.field3]
   end
  end
	
  send_data(NKF.nkf('-U -s -Lw', report),
   :type => ‘text/csv; charset=shift_jis; header=present’,
   :filename => “report-#{Time.now.strftime(’%Y%m%d’)}.csv\")
 end

後はこれを view から呼び出してやれば良い。

< %= link_to 'CSV出力', :action => ‘csv’ %>

Mydata.find(:all) に、抽出条件やソートオーダーを足してもいい。
NKFを通しているおかげで、UTF-8のデータがWindowsでも文字化けなしに表示できた。Yuichiro MASUIさん、ありがとう。

娘の誕生祝い。
タダシヤナギのガトーショコラ。美味しかったぁ。


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/107

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.020 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
テーマ選択

(4 テーマ)