我想以下列方式将数据从Rails导出到Excel:
我正在考虑使用to_xls gem,但无法让它在任意数组(仅Active Record对象)上工作。
文档说gem只是略微面向导出Active Record集,并且它旨在将数组转换为Excel,因此它必须是可能的。
我认为问题在于它要求数组中的每个对象都响应.attributes。我尝试了向导出所基于的Active Record模型添加虚拟属性的方法,但似乎在调用.attributes时不显示。
我怎么能让这个工作? (或者你能否提出另一种实现这些目标的方法?)
答案 0 :(得分:4)
这适用于任意数组和ActiveRecord对象。显然,to_xls gem通过:columns和:headers参数支持所有自定义。
require 'bundler/setup'
require 'to_xls'
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def name
"#{first_name} #{last_name}"
end
end
array = [Person.new("Andrzej", "Krzywda"), Person.new("Derek", "Hill")]
File.open("output.xls", "w") do |f|
f.write(
array.to_xls(
:columns => [:first_name, :last_name, :name],
:headers => ["First name", "Last name", "name"]
)
)
end
答案 1 :(得分:0)
你试过axlsx吗?根据{{3}},它应该适用于通用数组。