Ruby Spreadsheet gem 格式单元格在第三个 sheet 上停止工作
Ruby Spreadsheet gem format cell stops working on third sheet
我正在尝试为 table 设置背景颜色。它适用于此代码。但是如果我的工作簿有超过 3 sheets,set_format 将不会在第三 sheet 行 (8) 第 4 个单元格上工作。
从那以后,所有格式都将不起作用。生成的每个 xls 文件都具有相同的结果。它停在那个特定的单元格上,工作簿的所有其余部分都没有更多的样式。有什么建议吗?
请看附图。
def make_xls
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet
4.times { |x| sheet.column(x).width = 30 }
4.times { |x| sheet.row(0).set_format(x, title_format) }
4.times { |x| sheet.row(1).set_format(x, header_format) }
4.times { |x| sheet.row(7).set_format(x, title_format) }
4.times { |x| sheet.row(8).set_format(x, header_format) }
insert_values..
end
def title_format
Spreadsheet::Format.new(
weight: :bold,
pattern: 1,
pattern_fg_color: :silver
)
end
def header_format
Spreadsheet::Format.new(
color: :white,
pattern: 1,
pattern_fg_color: :xls_color_48,
weight: :bold
)
end
4th cell missing format
欢迎任何建议,我正在使用 spreadsheet (1.2.6),RoR6。
您不应创建多种格式。
而是创建一次并在需要时重复使用它们。
问题是:
4.times { |x| sheet.row(0).set_format(x, title_format) }
然后创建 4 种新格式
4.times { |x| sheet.row(7).set_format(x, title_format) }
再创建 4 个。尽管它们看起来都一样,但实际上是 8 种不同的格式。因此,仅在您发布的代码中,您就在该工作簿中创建了 16 种不同的样式。
Excel can only handle so many formats 在它真正不高兴之前(通常会导致腐败)
该站点的注释部分(在原因下)不适用于以编程方式添加样式以编程方式添加样式时,它将为每个新样式创建单独的引用,而不确定是否这种风格已经存在
试试这个:
TITLE_FORMAT = Spreadsheet::Format.new(weight: :bold,pattern: 1,pattern_fg_color: :silver)
HEADER_FORMAT = Spreadsheet::Format.new(color: :white,pattern: 1,pattern_fg_color: :xls_color_48,weight: :bold)
def make_xls
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet
4.times { |x| sheet.column(x).width = 30 }
4.times { |x| sheet.row(0).set_format(x, TITLE_FORMAT) }
4.times { |x| sheet.row(1).set_format(x, HEADER_FORMAT ) }
4.times { |x| sheet.row(7).set_format(x, TITLE_FORMAT) }
4.times { |x| sheet.row(8).set_format(x, HEADER_FORMAT ) }
end
看看是否有帮助
我正在尝试为 table 设置背景颜色。它适用于此代码。但是如果我的工作簿有超过 3 sheets,set_format 将不会在第三 sheet 行 (8) 第 4 个单元格上工作。 从那以后,所有格式都将不起作用。生成的每个 xls 文件都具有相同的结果。它停在那个特定的单元格上,工作簿的所有其余部分都没有更多的样式。有什么建议吗?
请看附图。
def make_xls
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet
4.times { |x| sheet.column(x).width = 30 }
4.times { |x| sheet.row(0).set_format(x, title_format) }
4.times { |x| sheet.row(1).set_format(x, header_format) }
4.times { |x| sheet.row(7).set_format(x, title_format) }
4.times { |x| sheet.row(8).set_format(x, header_format) }
insert_values..
end
def title_format
Spreadsheet::Format.new(
weight: :bold,
pattern: 1,
pattern_fg_color: :silver
)
end
def header_format
Spreadsheet::Format.new(
color: :white,
pattern: 1,
pattern_fg_color: :xls_color_48,
weight: :bold
)
end
4th cell missing format
欢迎任何建议,我正在使用 spreadsheet (1.2.6),RoR6。
您不应创建多种格式。 而是创建一次并在需要时重复使用它们。
问题是:
4.times { |x| sheet.row(0).set_format(x, title_format) }
然后创建 4 种新格式
4.times { |x| sheet.row(7).set_format(x, title_format) }
再创建 4 个。尽管它们看起来都一样,但实际上是 8 种不同的格式。因此,仅在您发布的代码中,您就在该工作簿中创建了 16 种不同的样式。
Excel can only handle so many formats 在它真正不高兴之前(通常会导致腐败)
该站点的注释部分(在原因下)不适用于以编程方式添加样式以编程方式添加样式时,它将为每个新样式创建单独的引用,而不确定是否这种风格已经存在
试试这个:
TITLE_FORMAT = Spreadsheet::Format.new(weight: :bold,pattern: 1,pattern_fg_color: :silver)
HEADER_FORMAT = Spreadsheet::Format.new(color: :white,pattern: 1,pattern_fg_color: :xls_color_48,weight: :bold)
def make_xls
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet
4.times { |x| sheet.column(x).width = 30 }
4.times { |x| sheet.row(0).set_format(x, TITLE_FORMAT) }
4.times { |x| sheet.row(1).set_format(x, HEADER_FORMAT ) }
4.times { |x| sheet.row(7).set_format(x, TITLE_FORMAT) }
4.times { |x| sheet.row(8).set_format(x, HEADER_FORMAT ) }
end
看看是否有帮助