使用write_xlsx gem创建动态xlsx

时间:2016-09-07 14:42:57

标签: ruby-on-rails ruby

我想将用户的数据库的一部分导出为.xlsx

我设法创建了一个静态文件,让用户下载它,但这不是重点。

用户应选择他想要的过滤器,因此应直接通过浏览器创建和下载文件。

我的代码看起来像这样:

控制器

def download_pdf
  send_data generate_pdf,
            type: "application/xlsx"
end

private

def generate_pdf
  workbook = WriteXLSX.new('export.xlsx')

  worksheet = workbook.add_worksheet

  worksheet.write(0, 0, 'status')
  worksheet.write(0, 1, 'date')
  worksheet.write(0, 2, 'customer')

  workbook
end

结果将是一个文件,内容只是对象的名称

#<WriteXLSX:0x007fd9cf8aa290>

我不确定这是否是特定于write_xlsx的内容,或者我是否遗漏了明显的内容。

1 个答案:

答案 0 :(得分:0)

保存&#39; export.xlsx&#39;到磁盘,你应该使用Workbook #close。 请参阅下面的generate_xlsx方法。

def generate_xlsx
  workbook = WriteXLSX.new('export.xlsx')

  worksheet = workbook.add_worksheet

  worksheet.write(0, 0, 'status')
  worksheet.write(0, 1, 'date')
  worksheet.write(0, 2, 'customer')

  workbook.close   # <- Workbook#close
end

您可以在http://cxn03651.github.io/write_xlsx/index.html阅读文档。

享受!