获取对现有工作簿的引用以进行操作

Obtaining a reference to an already existing workbook for manipulation

当 运行 我的脚本时,我应该如何获取对已经存在的 .xlsx 工作簿的引用?

我正在使用 Ruby gem Axlsx,这是我的代码:

require 'axlsx'

p = Axlsx::Package.new

wb_file = File.open("simple.xlsx", "a+")
wb = p.workbook(wb_file) # STICKING POINT: can't get a handle on an already existing workbook
# wb = p.workbook("simple.xls")


# worksheet = Worksheet.new(self, options)

sheet = p.workbook.sheet_by_name("Basic Worksheet")
sheet.add_row ["11", "22", "33"]

p.serialize('simple2.xlsx')

我遇到了这个异常:

ArgumentError: wrong number of arguments (1 for 0)
from /home/mindaugas/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/axlsx-2.0.1/lib/axlsx/package.rb:65:in `workbook'
from (irb):9
from /home/mindaugas/.rbenv/versions/2.2.1/bin/irb:11:in `<main>'

因为该方法不接受参数。

def workbook
  @workbook || @workbook = Workbook.new
  yield @workbook if block_given?
  @workbook
end

如何获取现有工作簿以便对其进行操作?

我应该扩展 gem(做一些修改)吗?

也许可以通过某种方式将其分配给 @workbook 实例变量,这样它就不会 return 成为 Workbook.new.

无法使用 Axlsx 库打开现有工作簿(来源:https://github.com/randym/axlsx/issues/283)。

还有另一个 Ruby 库支持编辑现有文件:https://github.com/weshatheleopard/rubyXL