0

在以下代码中,happy_path有效,但无效sad_path

require "axlsx"

def happy_path
  package = Axlsx::Package.new
  workbook = package.workbook
  worksheet = workbook.add_worksheet
  worksheet.add_row(["Hot", "Summer", "Night"])
  cell = worksheet.name_to_cell("A1")
  cell.value = "Cold"
  package.serialize("Happy_path_20130104.xlsx")
end

def sad_path
  package = Axlsx::Package.new
  workbook = package.workbook
  worksheet = workbook.add_worksheet
  worksheet.add_row(["Hot", "Summer", "Night"])
  cell = worksheet.name_to_cell("E1")
  begin
    cell.value = "Meatloaf"
  rescue NoMethodError
    STDERR.puts $!
  end
  package.serialize("Sad_path_20130104.xlsx")
end

happy_path
sad_path

sad_path给出错误

undefined method `value=' for nil:NilClass

因为cell是零。

http://rubydoc.info/github/randym/axlsx/Axlsx/Cell和文档的其他部分警告:

注意:生成单元格的推荐方法是通过 Worksheet#add_row

问题是我希望能够将数据添加到 A1、B1 和 C1,然后再将数据添加到 E1、F1 和 G1。

有没有办法做到这一点?或者我应该存储 A1、B1、C1 和 E1、F1 和 G1 的数据,并一次将其全部添加到工作表中?

4

1 回答 1

1

在将这样的方法添加到库之前,我希望看到更多讨论。Axlsx 有意稀疏以最小化序列化时间。如果您可以在 github 上提交拉取请求,那真的会对每个人都有帮助。同时,如果您发送 nil 值,则将根据您的要求创建单元格。

例如:

add_row ["foo", nil, nil]

将创建 A1...C1 单元格,您可以直接访问这些单元格的方法。

于 2013-01-04T15:14:53.420 回答