Rails 3 - 使用网格线导出到Excel

时间:2012-03-14 19:27:49

标签: ruby ruby-on-rails-3

我可以在此方法中添加什么来强制Excel导出中的完整网格线?

  def export_invoices
    headers['Content-Type'] = "application/vnd.ms-excel"
    headers['Content-Disposition'] = 'attachment; filename="Invoices.xls"'
    headers['Cache-Control'] = ''
    @invoices = Invoice.all
    render :layout => nil
  end

谢谢!

3 个答案:

答案 0 :(得分:0)

嗯,这里发生的许多事情我认为没有意义。这条线

@invoices = Invoice.all

会产生类似SELECT "invoices".* FROM "invoices"的SQL - *表示您希望表格中的所有列,而.all表示您想要所有发票,而不仅仅是一张。除非表的内容是单列二进制类型,否则我看不到这个工作,因为Excel的文件格式是特定于供应商的二进制文件(我认为!)。

您是否正在使用某些宝石,如回形针或其他来处理保存文件?除非你在Rails中操作实际的excel数据(可能有一个知道如何执行此操作的gem),否则文件是否与网格线一起保存。

答案 1 :(得分:0)

This page介绍了如何使用XML格式化Excel文件。

答案 2 :(得分:0)

如果我理解你的问题是正确的,那么你希望在excel中设置输出的样式。为此,您需要实际生成office open XML文档,而不是使用应用程序标头转储CSV。

看看这两个宝石

http://rubygems.org/gems/axlsx

http://rubygems.org/gems/acts_as_xlsx

他们应该给你你想要的东西。