Techioz Blog

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。

その他のドキュメントはこちら。