0

我一直在尝试在我的应用程序中生成一个 XLSX 文件。我正在使用 gem 'acts_as_xlsx'。

问题是文档是在后台生成的,我不想渲染视图。这是一个应该返回 XLSX 文件的脚本。

我正在尝试做类似的事情:

file = File.open("report.xlsx", relation.to_xlsx, type: "application/vnd.openxmlformates-officedocument.spreadsheetml.sheet")

这将返回错误,因为 File.open 的第二个参数必须是字符串。

提前致谢!

4

1 回答 1

1

to_xlsx应该返回 Axlsx 包。该包将自己保存到一个文件中:

relation.to_xlsx.serialize("report.xlsx")

但是,如果您通过电子邮件发送它,您只需将其作为附件放置。您不需要将其保存为文件:

class UserMailer < ActionMailer::Base
  def export(users)
    content = User.to_xlsx(data: users).to_stream.string
    attachments["Users.xlsx"] = {mime_type: Mime::XLSX, content: content}
    ...
  end
end

此外,您会在上面注意到,为您acts_as_xlsx注册Mime::XLSX。所以你可以使用它而不是长的 mime 字符串。

于 2014-07-11T21:58:32.300 回答