2016-01-02 62 views
1
Rails 4.2 
RubyXL 

我正在使用RubyXL創建工作簿。我可以寫上:下載工作簿而不將其保存到磁盤中rubyxl

workbook.write("path/to/desired/Excel/file.xlsx") 

,然後用這樣的下載:

由send_file(workbook.write( 「路徑/到/所需/ EXCEL/file.xlsx」),選擇= {:filename =>'myworkbook.xlsx',:處置=>'附件'})

有關如何下載它,而無需首先將其保存到服務器的任何建議?

回答

3

您可以直接轉換工作簿轉換爲字符串:

def get_worksheet_as_string 
    workbook = RubyXL::Workbook.new 
    # Fill workbook here or leave as is to download empty 
    send_data workbook.stream.string, filename: "myworkbook.xlsx", 
            disposition: 'attachment' 
end 
+0

它沒有工作。錯誤消息是我正在流中獲取一個零。當我將它保存到磁盤時,它工作正常。 – EastsideDeveloper

+0

@EastsideDeveloper它在我的代碼中工作,我不知道有什麼區別可能會導致此類行爲。你可以嘗試用'read'替換'string'嗎?它應該返回這個相同的結果,但我猜測什麼是錯的... – Mareq

+0

更新我的答案與我剛纔嘗試的方法。在這種狀態下,它按預期工作。您可以嘗試此操作,然後檢查該工作簿的哪些修改意味着它停止工作。 – Mareq