Rails axlsx_rails gem。既存の行の間に新しい行を挿入
概要
axlsx に基づいた axlsx_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
次に、たとえば 2 行目と 3 行目の間に新しい行を挿入する必要があります。どうすればこれを達成できるでしょうか?
解決策
これを行うにはもっと良い方法があるはずですが、行を追加、削除し、別の場所に挿入することができます。
sheet.add_row %w{this row is inserted}
sheet.rows.insert 2, sheet.rows.delete_at(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_at(sheet.rows.length-1)
最初のものを使用することもできます。複雑なワークシートを備えた YMMV。
その他のドキュメントはこちら。