2012-03-08 47 views
1

我在Rails應用程序中使用了電子表格寶石,並希望能夠下載由電子表格生成的Excel文件。我在我的控制了以下行動:使用電子表格下載Excel文件在rails應用程序中創建寶石

def download_xls 
    send_data spreadsheet_report("Test", Prospects::INQUIRY_COLUMN_ORDER), 
    :filename => "Test.xls", 
    :type => "application/vnd.ms-excel" 
end 

spreadsheet_report方法是在同一個控制器定義:

def spreadsheet_report(excel_filename, inquiry_column_order) 
    book = Spreadsheet::Workbook.new 
    sheet1 = book.create_worksheet :name => Array1[0] 
    sheet2 = book.create_worksheet :name => Array2[1] 

    rownum = 0 
    for column in inquiry_column_order 
    sheet1.row(rownum).push column 
    end 

    book.write "#{excel_filename}.xls" 
end 

的「TEST.XLS」文件下載罰款,但似乎失去了必要的格式化,僅創建一個工作表,並且只有第一行上的值可以進行拉伸,例如「@ biff_version = 1536」。我使用LibreOffice Calc打開它,所以我不知道是否會導致一些問題,但我能夠生成該文件並使用LibreOffice Calc在send_data上下文之外打開它。我錯過了什麼?

+0

順便說一句,Ruby中'for'循環是皺眉。只要有可能,請使用['each'](http://ruby-doc.org/core-1.9.3/Array.html#method-i-each)。 – 2012-03-08 01:52:24

回答

1

工作表2正在創建,但沒有顯示,因爲裏面沒有任何東西。

就扔在 -

sheet2.row(0).push 'Test Row' 

是否有任何被放入第二片。

對於行,通過查看您的代碼,每次循環遍歷inquiry_column_order中的每列時,不會增加rownum。

在for循環中你推到片數據後,只需添加

rownum += 1  

。希望工程,我剛開始使用電子表格今天:)

相關問題