2015-04-23 38 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

相关问题