2011-02-06 4 views
0

CSVを列ではなくレイアウトにレイアウトする必要があります。だから、スプレッドシートを横切って行くのではない。たとえば:ファーストCSVレイアウト

ヘッダ1、value1.1、value2.1
ヘッダー2、value1.2、value2.2
ヘッダ3、value1.3、value2.3

誰がどのように知っていますこれをする?私はドキュメントを読んできましたが、レイアウトを列に変更する方法については何も見つかりませんでした。

EDIT:

row_data = []; 
csv_string = FasterCSV.generate do |csv| 
    # header row 
    row_data << ["id", "Name", "Age"] 

    # data rows 
    Playerapplication.find_each do |player| 
    row_data << [player.id, player.name, player.age] 
    end 

    row_data.transpose 
    csv << row_data 
end 

# send it to the browser 
send_data csv_string, 
      :type => 'text/csv; charset=iso-8859-1; header=present', 
      :disposition => "attachment; filename=players_application.csv" 

答えて

1

だけでCSVに書き込む前にデータのアレイ#転置を使用しています。

あなたは、このようにコードを変更する場合:

row_data = []; 
csv_string = FasterCSV.generate do |csv| 
    # header row 
    row_data << ["id", "Name", "Age"] 

    # data rows 
    Playerapplication.find_each do |player| 
    row_data << [player.id, player.name, player.age] 
    end 

    row_data.transpose.each do |row| 
    csv << row 
    end 
end 

それは私のために動作します。

+0

転置を実行しても、値は新しい列/行に分割されません。新しいレコードはそれぞれ新しい列にバンドルされます。だから一列に沿ってこのように見えます。 Header1Header2Header3、value1.1value1.2value1.3、value2.1value2.2value2.3。私は私のコードを自分のコードで更新しました。間違ったことが見える? – Peter

+0

@Peter簡単なコードの変更で答えを修正しました。 –

+0

ありがとうございました。 – Peter