2015-04-23 71 views
0

此代碼:如何在roo中打開新的XLSX文件?

newBook = Roo::Excelx.new('./test.xlsx') 

給了我這個錯誤:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/roo-1.13.2/lib/roo/excelx.rb:85:in `block in initialize': file ./test.xlsx does not exist (IOError) 

爲什麼?如何用Ruby的roo gem創建一個新的XLSX文件?

+3

roo只允許讀取Excel文件。您可以使用roo-google編寫Google電子表格,或者您可以嘗試使用axlsx gem(這是我的最愛) – engineersmnky

+0

@engineersmnky Hm,'axlsx'好像是Rails的。我錯了嗎? – Username

+1

沒有axlsx可以用於純紅寶石。我一直使用它來運行出口和其他excel報告。我會發佈一個快速的答案來展示給你。 – engineersmnky

回答

1

Roo僅用於閱讀Excel文件。我會推薦axlsx寶石。

它可以在純Ruby按如下方式使用

require 'axslx' 
package = Axlsx::Package.new 
workbook = package.workbook 
workbook.add_worksheet(name: 'Some Sheet Name') do |sheet| 
    sheet.add_row ["Header 1", "Header 2", "Header 3"] 
    sheet.add_row ["Data 1", "Data 2", "Data 3"] 
end 
package.serialize('./test.xlsx') 

這將創建一個電子表格,看起來像

-------------------------------- 
| Header 1 | Header 2 | Header 3 | 
-------------------------------- 
| Data 1 | Data 2 | Data 3 | 

axlsx提供幾乎一切你可以在Excel做的,包括造型和有條件的造型。希望這可以幫助你。

+0

太棒了!在添加行時,是否有一種方法可以指定我希望數據在哪個單元格中?例如:我只希望數據進入「標題2」列。我會怎麼做? – Username

+1

@Username是的,它會是'sheet.add_row [nil,「Data」]''add_row'將會創建一個新的+1行。傳入的數組將作爲行,所以'[nil,'Data']'將是一個空白單元格,然後是「數據」。 – engineersmnky

相關問題