Rails,Spreadsheet gem:如何将电子表格数据直接输出到客户端?

时间:2012-05-31 17:06:16

标签: ruby-on-rails ruby ruby-on-rails-3 spreadsheet

这可能非常简单:我正在使用Spreadsheet gem创建工作簿(即电子表格),只想将Excel数据直接发送到客户端而无需先写入文件。

现在,我正在将工作簿写入tmp目录中的文件,然后使用send_file发送,但这似乎非常不优雅,因为我不需要文件一旦它已发送(甚至不用于缓存目的)。

最理想的情况是,我只想使用send_data块中的工作簿数据调用respond_to :xls

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

工作簿的write方法接受任何路径或IO对象,因此不是传递文件或文件路径,而是传递给它一个StringIO。

require 'stringio'
class MyController < ApplicationController
  def someaction
    ...
    buffer = StringIO.new
    book.write(buffer)
    buffer.rewind
    send_data buffer.read
  end
end