0
我喜歡使用內置的csv軌道庫從我的rails應用程序導出一個數據集作爲csv文件。通常一個CSV文件寫入行明智就像在我下面的例子這來自我的datasets_controller.rb:Rails寫一個csv文件明智的列
require 'csv'
dataset = Dataset.find(6)
dataset_headers = dataset.datacolumns.collect { |dc| dc.columnheader }
csv_file = CSV.generate do |csv|
csv << dataset_headers
end
現在我的問題是,如果我還可以寫我的CSV文件逐列這樣嗎?
require 'csv'
dataset_columns = Datacolumn.all(:conditions => ["dataset_id = ?", 6], :order => "columnnr ASC").uniq
csv_file = CSV.generate do |csv|
csv << "here put one after another all my data columns"
end
編輯:
基於我想出了下面的colde道格拉斯建議。
data_columns=Datacolumn.all(:conditions => ["dataset_id = ?", dataset.id], :order => "columnnr ASC").uniq
CSV.generate do |csv|
value=Array.new
data_columns.each do |dc|
value << dc.columnheader
dc.sheetcells.each do |sc|
if sc.datatype && sc.datatype.is_category? && sc.category
value << sc.category.short
elsif sc.datatype && sc.datatype.name.match(/^date/) && sc.accepted_value
value << sc.accepted_value.to_date.to_s
elsif sc.accepted_value
value << sc.accepted_value
else
value << sc.import_value
end
end
csv << value
value = Array.new
end
end
輸出未調換這種情況下,看起來像這樣:
height,10,2,<1,na
fullauthor,Fortune,(Siebold & Zucc.) Kuntze,Fortune,(Siebold & Zucc.) Kuntze
Year,1850,1891,1850,1891
fullname,Mahonia bealei,Toxicodendron sylvestre,Mahonia bealei,Toxicodendron sylvestre
但是,當我改變該CSV寫入
csv << value.transpose
行我得到一個錯誤,告訴我它無法將字符串轉換爲數組來執行此操作。 任何人的想法如何解決這個問題?
任何幫助,這將不勝感激。
最佳克拉斯
感謝您的幫助。這正是我需要的。我根據您的建議創建了一些代碼(請參閱編輯)。我仍然有一些麻煩讓轉置工作。 – ctpfaff