首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails excel mime-type -如何更改默认文件名?

rails excel mime-type -如何更改默认文件名?
EN

Stack Overflow用户
提问于 2012-07-24 16:47:34
回答 3查看 7.6K关注 0票数 4

我遵循http://railscasts.com/episodes/362-exporting-csv-and-excel并在我的Rails应用程序中设置了一个Excel下载。

我的控制器代码如下所示:

代码语言:javascript
复制
  def show
    @project = Project.find(params[:id])
    @project.tasks.order(:name)
    respond_to do |format|
      format.html
      format.json { render json: @project }
      format.xls
    end
  end

在我的视图中,我创建了下载excel文件的链接,如下所示:

代码语言:javascript
复制
.dl_xls= link_to "Download xls", url_for(:format => 'xls')

现在,生成的excel文件的名称始终类似于Project记录的id,例如80.xls

有没有办法改变这种行为并给它一个自定义的名字?

谢谢。。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-24 18:13:12

我相信你的答案在这里:in rails, how to return records as a csv file

使用头文件设置文件名。

代码语言:javascript
复制
headers["Content-Disposition"] = "attachment; filename=\"#{filename}\"" 
票数 25
EN

Stack Overflow用户

发布于 2013-05-19 08:58:19

代码语言:javascript
复制
def index
  @tabulars = Tabular.all
  filename = "data_users.xls"
  respond_to do |format|
    format.html
    format.xls { headers["Content-Disposition"] = "attachment; filename=\"#{filename}\"" }
  end
end

此链接more detail change the file name excel

票数 7
EN

Stack Overflow用户

发布于 2012-07-24 18:12:54

我期望您在那里实际看到的是视图的名称,而不一定是.erb的控制器操作。

如果你想要这种级别的控制,你可以做三件事。

  • 使用控制器中的send_data调用,并使用制表符分隔的数据,如rails转换中所示,文件名为: option

例如:

代码语言:javascript
复制
class ProductsController < ApplicationController
  def index
    @products = Product.order(:name)
    respond_to do |format|
      format.html
      format.csv { send_data @products.to_csv }
      format.xls { send_data @products.to_csv(col_sep: "\t"), filename: 'your_file_name.xls'}
    end
  end
end

这种方法以及铁路广播引入的旧的专有spreadsheetML语言都存在问题,但如果您的用户基础锁定在MS-OFFICE中,我认为没有人会注意到。

可以使用像acts_as_xlsx或axlsx_rails这样的gem来使用axlsx gem。这些工具生成经过验证的xlsx数据(也称为Office Open XML / ECMA-376 -或MS自office 2007以来一直使用的数据),并与其他现代电子表格软件(如Numbers、GoogleDocs、LibraOffice )具有相当好的互操作性。我相信你注意到了铁路广播中所有与此相关的评论。

我知道,因为我是作者或axlsx,以及这些限制,以及缺乏样式,图表和验证,这是驱使我编写axlsx的首要原因。

更多信息: axlsx:https://github.com/randym/axlsx

acts_as_xlsx:http://axlsx.blogspot.jp/2011/12/using-actsasxlsx-to-generate-excel-data.html

  • 编写您自己的响应器/渲染器

axlsx_rails也是一个很好的例子,告诉你如何创作自己的渲染器和响应器,这样你就可以使用标准的rails视图,但是要重命名下载的文件。

https://github.com/straydogstudio/axlsx_rails/blob/master/lib/axlsx_rails/action_controller.rb

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11627291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档