Ruby Axlsx Gem解锁风格在整个列上

Ruby Axlsx Gem解锁风格在整个列上,ruby,Ruby,在gemaxlsx中使用Ruby,我一直在试图找出如何为整个列设置样式,但我还没有找到它。我能做到这一点的唯一方法是在循环中,将行中的每个单元格设置为我想要的样式,例如: unlocked = wb.styles.add_style :locked => false #...looping code here, assuming add_worksheet has been assigned to sheet sheet.rows[rowNum].cells[columnNum].styl

在gemaxlsx中使用Ruby,我一直在试图找出如何为整个列设置样式,但我还没有找到它。我能做到这一点的唯一方法是在循环中,将行中的每个单元格设置为我想要的样式,例如:

unlocked = wb.styles.add_style :locked => false
#...looping code here, assuming add_worksheet has been assigned to sheet
sheet.rows[rowNum].cells[columnNum].style = unlocked
我了解了如何为整个列设置隐藏属性:

sheet.column_info[3].hidden = true
从文档中,我认为这一行是可行的:

sheet.column_info[0].style = unlocked
最奇怪的是,这个样式集行并没有失败,实际上,在查询它之后,它会显示样式被设置为add_样式返回中相应的数字。但是,在检查生成的电子表格时,它不会将整个列显示为未锁定

我知道使用write_xlsx gem可以很容易地在整个列上完成这项工作,所以我想知道是否可以使用axlsx来完成,我只是找不到正确语法的示例来使用?

要做到这一点,可以使用signature is
col_style(index,style,options={})

索引

要设置样式的行的索引(索引从0开始)。索引也可以是一个范围,因此如果要解锁a到C列,则
工作表。col_样式((0..2),unlocked)
仍将根据代码的工作方式正常工作

风格

必须是预定义的样式,因为它在gem的其余部分中

选项={}

options
允许您设置行偏移量,因此如果您不想解锁前n行,可以通过
行偏移量:n
,并且
n
行之后列中的所有单元格都将被解锁。 例如:

完整示例

require 'axlsx'
p = Axlsx::Package.new
wb = p.workbook
unlocked = wb.styles.add_style(locked: false)
wb.add_worksheet do |sheet|
  5.times { sheet.add_row [1,2,3,4,5,6]}
  sheet.col_style(3,unlocked)
end
p.serialize('/simple_test.xlsx')
这将创建一个包含6列的电子表格,包含4列的列(索引从0开始)将被解锁,而其余列保持锁定(默认)

其他信息

此方法的返回值将是受影响单元格的平面数组

注意:代码与您在循环中所做的几乎完全相同。它收集所有单元格,然后将样式应用于循环中的每个单元格。

要做到这一点,可以使用签名is
col\u style(index,style,options={})

索引

要设置样式的行的索引(索引从0开始)。索引也可以是一个范围,因此如果要解锁a到C列,则
工作表。col_样式((0..2),unlocked)
仍将根据代码的工作方式正常工作

风格

必须是预定义的样式,因为它在gem的其余部分中

选项={}

options
允许您设置行偏移量,因此如果您不想解锁前n行,可以通过
行偏移量:n
,并且
n
行之后列中的所有单元格都将被解锁。 例如:

完整示例

require 'axlsx'
p = Axlsx::Package.new
wb = p.workbook
unlocked = wb.styles.add_style(locked: false)
wb.add_worksheet do |sheet|
  5.times { sheet.add_row [1,2,3,4,5,6]}
  sheet.col_style(3,unlocked)
end
p.serialize('/simple_test.xlsx')
这将创建一个包含6列的电子表格,包含4列的列(索引从0开始)将被解锁,而其余列保持锁定(默认)

其他信息

此方法的返回值将是受影响单元格的平面数组

注意:代码与您在循环中所做的几乎完全相同。它收集所有单元格,然后将样式应用于循环中的每个单元格