如何使用Spreadsheet gem在Ruby中创build新的电子表格工作表?

特别是我想要做的是添加新的工作表旁边已经有。 我试过使用book.create_worksheet :name => 'new_sheet'但它覆盖了以前的工作表。

我在这里search了这个网站,看到一些人使用了不同的gem,允许“book.add_worksheet”(电子表格gem应该支持其他的gem,就好像它应该像1gem中的3个gem一样)这几乎工作,但我得到错误undefined method 'workbook=' for "new_sheet":String (NoMethodError)时,执行line sheet = book.add_worksheet("new_sheet")

我试过的另一件事是sheet = Spreadsheet::Worksheet.new ,我在Spreadsheet ruby​​forge页面上看到有公共类方法new(opts={}) ,如果您单击以查看代码,则包含行@name = opts[:name] || Worksheet @name = opts[:name] || Worksheet导致我相信我应该能够使用这个来创build和命名一个新的工作表,但我无法弄清楚正确的语法。

我正在尝试什么? 看来我正在接近,但我没有完全击中它。

book.create_worksheet(:name => 'unique_name')适合我!

 book = Spreadsheet::Workbook.new sheet1 = book.create_worksheet(:name => 'AAA') sheet2 = book.create_worksheet(:name => 'BBB') sheet1.row(0).concat %w{Name Country Acknowlegement} sheet1[1,0] = 'Japan' row = sheet1.row(1) row.push 'Creator of Ruby' row.unshift 'Yukihiro Matsumoto' sheet1.row(2).replace [ 'Daniel J. Berger', 'USA', 'Author of original code for Spreadsheet::Excel' ] sheet1.row(3).push 'Charles Lowe', 'Author of the ruby-ole Library' sheet1.row(3).insert 1, 'Unknown' sheet1.update_row 4, 'Hannes Wyss', 'Switzerland', 'Author' sheet2.row(0).concat %w{NAME COUNYRY ACK} sheet2[1,0] = 'JAPAN' row = sheet2.row(1) row.push 'CREATOR OF RUBY' row.unshift 'YUKIHIRO MATSUMOTO' sheet2.row(2).replace [ 'DANIEL J. BERGER', 'USA', 'AUTHOR OF ORIGINAL CODE FOR Spreadsheet::Excel' ] sheet2.row(3).push 'CHARLES LOWE', 'AUTHOR OF THE RUBY-OLE LIBRARY' sheet2.row(3).insert 1, 'UNKNOWN' sheet2.update_row 4, 'HANNES WYSS', 'SWITZERLAND', 'AUTHOR' book.write '/Users/stephen/tmp/test2.xls' 

以上,从文档中逐渐提升起来很有效。

我发现你可以使用相同的variables创build很多工作表,你只需要改变放在它上面的名字。 例如:

articles.each do | art | sheet1 = book.create_worksheet:name => art.code end