首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axlsx铁轨生成.xlsx文件并以json/html的形式响应文件名

Axlsx铁轨生成.xlsx文件并以json/html的形式响应文件名
EN

Stack Overflow用户
提问于 2014-05-15 22:06:09
回答 2查看 6.1K关注 0票数 2

我正在用axlsx_rails gem生成xlsx文件。

在收集用户输入后,我将将数据发布到/basic_report_post.xlsx

控制器动作看起来就像

代码语言:javascript
复制
def basic_report_post
    @config = params[:config]
    @data = params[:data]
    @filename = "#{Rails.root}/public/test.xlsx"

    respond_to do |format|
      format.xlsx {
        render xlsx: 'basic_report_post'
      }
    end
  end

此操作basic_report_post.xlsx.axlsx的视图文件

代码语言:javascript
复制
wb = xlsx_package.workbook    
wb.add_worksheet(name: 'Data1') do |s|    
# Drawing columns    
end
xlsx_package.serialize @filename

我的问题是,我正在获取响应数据(在成功后的操作中),这是原始的.xlsx文件。但是我需要以某种方式响应@filename (格式json/html),然后下载它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-10 16:27:46

可以使用axlsx_rails模板呈现程序创建字符串并将其保存到文件中:

代码语言:javascript
复制
def basic_report_post
  @config = params[:config]
  @data = params[:data]
  @filename = "#{Rails.root}/public/test.xlsx"
  File.open(@filename, 'w') do |f|
    f.write render_to_string(handlers: [:axlsx], formats: [:xlsx], template: 'path/to/template')
  end
  render json: {name: @filename}
end

然后,如果需要,可以使用模板直接为文件提供服务。

票数 3
EN

Stack Overflow用户

发布于 2014-05-15 22:48:15

在对respond_to进行了一些实验之后,我将.xlsx生成逻辑移动到查看助手。

因此,我在控制器中包括了BasicReportHelper

basic_report_helper.rb

代码语言:javascript
复制
module BasicReportsHelper
    def generate_basic_report(filename)
        p = Axlsx::Package.new
        wb = p.workbook
        wb.add_worksheet(:name => "Basic Worksheet") do |sheet|
          # Drawing here          
        end
        p.serialize filename 
      end
end

更改对/basic_report_post.json的post调用并将操作更改为

代码语言:javascript
复制
def basic_report_post
    @config = params[:config]
    @data = params[:data]
    @filename = "#{Rails.root}/public/test.xlsx"
    generate_basic_report(@filename)
    respond_to do |format|
       format.json {
         render json: {name: @filename}
       }          
    end
  end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23689472

复制
相关文章

相似问题

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