0

我正在尝试导出到 XLS 文件。该文件正在保存,但没有扩展名。当我下载文件时,我需要手动添加“.xls”来指定它是一个 Excel 文件。

从我的角度来看,这是我的代码:

  <%= link_to("Export","http://localhost:3000/policy_management/policy/generate_print_ejecutive/generate_print_ejecutive_comercial.xls") %>

  <%= link_to "Export", :controller=>"policy_management/policy",:action=>"generate_print_ejecutive_comercial" ,:format=>"xls",:search => params[:search],:page => params[:page],:filename=>"aaa.xls" %>

这是我的控制器中的代码:

respond_to do |format|
   format.html
   format.xls { render  :partial=>"report_by_ejecutive",:filename=>"aaa.xls"}
end 
4

2 回答 2

0

你注册你的 Mime-Type 了吗?在/config/initializers/mime_types.rb添加Mime::Type.register "application/xls", :xls然后重新启动服务器。

特别是,请参阅此 Railscasts 集:http ://railscasts.com/episodes/362-exporting-csv-and-excel?view=asciicast

此外,您可能想要使用send_data(也允许您设置文件名):http ://apidock.com/rails/ActionController/Streaming/send_data

于 2013-09-18T17:18:53.330 回答
0

我认为方法对传递给它render的选项没有任何作用。:filename但是send_data确实接受filename选项,但它需要将文件作为字符串。因此使用render_to_string将部分转换为字符串。

format.xls { send_data render_to_string(:partial=>"report_by_ejecutive"), :filename => "aaa.xls" }
于 2013-09-18T17:44:49.557 回答