加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:使用to_xls gem将任意数组导出到Excel

发布时间:2020-12-17 02:34:06 所属栏目:百科 来源:网络整理
导读:我想以下列方式将数据从Rails导出到Excel: 支持特殊字符(é,?,ü等) 适用于所有版本的Excel 2007 允许我在导出之前添加计算列 我正在考虑使用to_xls gem,但无法让它在任意数组上工作(只有Active Record对象). 文档说gem只是略微面向导出Active Record集,并
我想以下列方式将数据从Rails导出到Excel:

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

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

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

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

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

解决方法

这适用于任意数组和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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读