Aad*_*adi 3 rubygems ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3
我正在尝试在轨道上创建ruby中的excel表.所以我使用了插件Rexcel.当我运行应用程序时,我收到以下错误.
未初始化的常量Rexcel :: Workbook :: Builder
我添加了以下代码,然后这个错误命中
workbook = Rexcel::Workbook.new
worksheet = workbook.add_worksheet("Customers")
worksheet.add_line("name","test")
headers['Content-Type'] = "application/vnd.ms-excel"
headers['Content-Disposition'] = 'attachment; filename="excel-export.xlsx"'
headers['Cache-Control'] = 'max-age=0'
headers['pragma']="public"
workbook.build
Run Code Online (Sandbox Code Playgroud)
怎么解决这个?
我建议使用Spreadsheet而不是Rexcel因为肯定更成熟,我正在使用它与Rails 3没有任何问题.
整个过程将是:
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet :name => 'Customers'
sheet.row(0).concat %w{Name Country Acknowlegement}
book.write '/path/to/output/excel-file.xls'
Run Code Online (Sandbox Code Playgroud)
+1到tommasop
我想补充一下.如果您和我一样认为这是呈现数据,就像xml,html或json一样,您不想写入光盘.如果您正在考虑使用Heroku,则Heroku是只读的.
我会改变book.write '/somepath..',以
def xls
.. your stuff ..
blob = StringIO.new("")
book.write blob
blob.string
end
Run Code Online (Sandbox Code Playgroud)
然后,在控制器中做
send_data @customer.xls, :type => :xls, :filename => @customer.xls_file_name
Run Code Online (Sandbox Code Playgroud)
记得在初始化程序中添加mime类型注意,我刚刚意识到这些示例来自我的rails 2.3.10 app.也许它在轨道3中有所不同.
Mime::Type.register "application/vnd.ms-excel", :xls
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6279 次 |
| 最近记录: |