2

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

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

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

有任何想法吗?

4

1 回答 1

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
于 2012-05-31T17:19:29.677 回答