【问题标题】:Rails axlsx_rails gem. Insert new row between existing rows导轨 axlsx_rails 宝石。在现有行之间插入新行
【发布时间】:2014-05-28 19:06:43
【问题描述】:

我正在使用基于axlsxaxlsx_rails gem 生成.xlsx 文件。我将行作为数组接收并像这样绘制它们:

# Workbook, sheet and styles creations left... 
data["config"].each do |item|
    sheet.add_row item.each_with_index.map{|row, index| row["value"]}, :style => row_style       
end

然后我需要在第二行和第三行之间插入一个新行。我想知道我怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby spreadsheet axlsx


    【解决方案1】:

    似乎应该有更好的方法来做到这一点,但是您可以添加一行,删除它,然后将其插入其他地方:

    sheet.add_row %w{this row is inserted}
    sheet.rows.insert 2, sheet.rows.delete(sheet.rows.length-1)
    

    sheet.rows.insert 需要一个 Axlsx::Row 对象。您可以单独创建一个,但初始化程序需要一个工作表参数,它会隐式地将行添加到工作表中:

    new_row = Axlsx::Row.new sheet, %w{this row is inserted}
    sheet.rows.last # => returns new_row
    # so we still have to do the same thing
    sheet.rows.insert 2, sheet.rows.delete(sheet.rows.length-1)
    

    您也可以使用第一个。具有复杂工作表的 YMMV。

    More docs here.

    【讨论】:

    • 我认为delete 调用应该是delete_at,因为正在传递一个索引。
    【解决方案2】:

    sheet.rows.insert [index], sheet.rows.delete(sheet.rows.last) #index 是你要插入的行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多