2016-09-07 38 views
0

我想导出我的数据库中的部分用户作为的.xlsx创建具有write_xlsx创业板动态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或者我在这里丢失了一些明显的东西。

+0

所以......你需要使用由用户提供的'params'编写一些逻辑?你收集什么'params'?你想用他们做什么? –

+0

我从来没有尝试过'write_xlsx',但是基于你想要导出模型的某个部分的事实,我强烈推荐['axlsx'](https://github.com/randym/axlsx)和['axlsx_rails' ](https://github.com/straydogstudio/axlsx_rails),它实现了一个名为'acts_as_axlsx'的方法,它只需要一个'ActiveRecord :: Relation'(意味着你可以使用查询方法来过滤)并从这个输出xlsx 。 – engineersmnky

+0

@TomLord它不是关于过滤本身,我甚至不能创建文件。我的步骤是模拟一个动态文件,但现在内容将是静态的。我只是不想在服务器上创建文件,将它发送给客户,之后将其删除 – Elux91

回答

0

要将'export.xlsx'保存到磁盘,应该使用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的文件。

享受!