Rails:使用to_xls gem将任意数组导出到Excel

时间:2013-03-24 16:27:35

标签: ruby-on-rails export-to-excel

我想以下列方式将数据从Rails导出到Excel:

  • 支持特殊字符(é,ô,ü等)
  • 适用于所有版本的Excel 2007 +
  • 允许我在导出前添加计算列

我正在考虑使用to_xls gem,但无法让它在任意数组(仅Active Record对象)上工作。

文档说gem只是略微面向导出Active Record集,并且它旨在将数组转换为Excel,因此它必须是可能的。

我认为问题在于它要求数组中的每个对象都响应.attributes。我尝试了向导出所基于的Active Record模型添加虚拟属性的方法,但似乎在调用.attributes时不显示。

我怎么能让这个工作? (或者你能否提出另一种实现这些目标的方法?)

2 个答案:

答案 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}},它应该适用于通用数组。