gpt4 book ai didi

ruby-on-rails - AXLSX 合并样式内的单元格

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:55 46 4
gpt4 key购买 nike

我正在使用 ruby​​ gem axlsx,想知道是否有办法在样式中设置合并列?今天我这样做:

sheet.merge_cells "A1:E1"
sheet.add_row [I18n.t('foo.some_label').upcase], style: [title]
sheet.merge_cells "B2:E2"
...

我想避免手动递增单元格 (B2:E2...B5:E5),有办法做到这一点吗?

最佳答案

是的,试一试(*免责声明,我实际上并没有测试这些方法,但我过去使用过类似的功能)

def merge_last_row(sheet,options ={})
last_row = sheet.rows.last.index + 1
first_col,last_col = options[:columns]
if first_col && last_col
sheet.merge_cells "#{first_col}#{last_row}:#{last_col}#{last_row}"
else
sheet.merge_cells sheet.rows.last
end
sheet.rows.last.style = style if options[:style]
end

做自己想做的事

merge_last_row sheet, columns:["A","E"]
sheet.add_row [I18n.t('foo.some_label').upcase]
merge_last_row sheet, columns:["B","E"], style:title

如果最后一行包含 A-E 中的数据,那么这些列可以留空,它会合并整行。如果没有,您可以添加一个选项来像这样填充列

def fill_columns(sheet,column_count,options={})
row = options[:row_data] || []
(column_count - row.count).times do
row << nil
end
sheet.add_row row
end

调用为

my_row = ["Hello","World"]
fill_columns sheet, 5,row_data: my_row
# this will add a row like["Hello","World",nil,nil,nil]
# so that it will merge properly across the columns A-E
merge_last_row sheet

如果您打算始终如一地使用这些函数,那么将这些函数修补到 Worksheet 中可能更有意义,这样您就不必传递 sheet 对象。

module Axlsx
class Worksheet
def merge_last_row(options={})
last_row = rows.last.index + 1
first_col,last_col = options[:columns]
if first_col && last_col
merge_cells "#{first_col}#{last_row}:#{last_col}#{last_row}"
else
merge_cells rows.last
end
rows.last.style = style if options[:style]
end
def fill_columns(column_count,options={})
row_data = options[:row_data] || []
(column_count - row.count).times do
row_data << nil
end
add_row row_data
end
end
end

打电话

sheet.merge_last_row columns:["A","E"]
sheet.add_row [I18n.t('foo.some_label').upcase]
sheet.merge_last_row columns:["B","E"], style:title

关于ruby-on-rails - AXLSX 合并样式内的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657513/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com