2016-09-07 35 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的文件。

享受!