4

我正在.xlsx使用axlsx_rails基于axlsx. 我将行作为数组接收并像这样绘制它们:

# 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

然后我需要在例如第 2 行和第 3 行之间插入一个新行。我想知道我怎么能做到这一点?

4

2 回答 2

4

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

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。

更多文档在这里

于 2014-06-10T14:57:52.590 回答
1

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

于 2014-09-22T10:08:57.393 回答