実行環境:
Rails 3.0.7
FasterCSV 1.5.4
Rails 3.0.7
FasterCSV 1.5.4
FasterCSVを使う(その3):CSV出力編
CSV形式のテキストを出力するわけですが、出力のやり方は2通りあります。1つは文字列として取得する方法、もう1つはCSVファイルとしてローカルに(Railsアプリが動いているサーバ上に)書き出す方法です。- CSV形式の文字列を取得
- CSVファイルに書き出す
CSV形式の文字列として取得する
使い方は簡単で、二次元配列を作ってあげるとCSV形式に組み立ててくれる、といった感じです。csv_string = FasterCSV.generate do |csv| csv << ['1', 'Edward', 'steel'] csv << ['2', 'Roy', 'flame'] csv << ['3', 'Alex', 'iron-armed'] end
直接CSVファイルに書き出す
ファイルに書き出す場合も似たような書き方で、ファイル名を指定してファイルに書き出します。FasterCSV.open('output.csv', 'w') do |csv| csv << ['1', 'Edward', 'steel'] csv << ['2', 'Roy', 'flame'] csv << ['3', 'Alex', 'iron-armed'] end
出力のオプション
デフォルトの設定ではカンマ区切りのCSVが出力されますが、区切り文字をタブに変更したり、といったことができます。# csv_string: 1(tab)Edward(tab)steel csv_string = FasterCSV.generate({:col_sep => ":", :row_sep => "|"}) do |csv| csv << ['1', 'Edward', 'steel'] csv << ['2', 'Roy', 'flame'] end # csv_string: 1:Edward:steel|2:Roy:flame各フィールドを引用符で囲む場合 csv_string = FasterCSV.generate({:col_sep => "¥t"}) do |csv| csv << ['1', 'Edward', 'steel'] end
# csv_string: "1","Edward","steel"囲む文字 :quote_char はデフォルトで「'」にセットされていて :force_quotes => true を指定すると初めて表示されます。:quote_char を空文字列にすると1文字にしろとおこられるので、囲みたくない場合は :quote_char を消すのではなく :force_quotes => false (デフォルト値) にするということですね。 csv_string = FasterCSV.generate({:quote_char => '"', :force_quotes => true}) do |csv| csv << ['1', 'Edward', 'steel'] end
ドキュメントにはオプションが CSV 読み込みと共通って書いてあるけど、使えるオプションはこれくらいかと。
0 件のコメント:
コメントを投稿