4

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

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

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

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

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

我怎么能得到这个工作?(或者您能提出实现这些目标的替代方法吗?)

4

2 回答 2

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
于 2013-03-24T16:55:58.647 回答
0

你试过axlsx吗?根据示例部分,它应该与通用数组一起使用。

于 2013-03-24T16:34:35.273 回答