使用axlsx创建3种颜色条件格式

时间:2012-10-29 07:16:52

标签: ruby axlsx

使用axlsx,以下

color_scale = Axlsx::ColorScale.new do |c_s|
  c_s.colors[1].rgb = "FFFFFF00"
end
color_scale.add :type => :percentile, :val => 50, :color => "FF00FF00"
worksheet.add_conditional_formatting("B3:B100", { :type => :colorScale, :operator => :greaterThan, :formula => "100000", :priority => 1, :color_scale => color_scale })

创建一个基本的3色条件格式,但颜色非常花哨,很难区分略小和稍大的值。

是否有必要对Excel使用的颜色进行反向工程,以创建看起来像Excel提供的默认3色条件格式的内容?

1 个答案:

答案 0 :(得分:3)

对于色阶,Excel默认情况下更喜欢主题,而Axlsx目前希望您准确指定所需内容。这部分是为了实现互操作性,但主要是因为我没有遇到需要与Excel默认值相似的用例。

那就是说,Axlsx应该尽其所能给你一些明智的默认值,我相信你能理解你的请求是如何改善这个领域的绝佳机会。

您是否愿意向我发送您想要实现的xlsx示例? 我相信我可以添加一些糖,让你对现在看到的结果更开心,并希望有益于宝石的其他用户。

更新2012.11.16

Axlsx已更新为在ColorScale上提供两种类方法,以创建具有双色和三色调颜色缩放的合理默认值的新ColorScale对象。这是目前掌握的,将在几周后发布1.3.4

示例:

# to make a three tone color scale
color_scale = Axlsx::ColorScale.three_tone

# to make a two tone color scale
color_scale = Axlsx::ColorScale.two_tone

# To make a customized color scale you, pass hashes consisting of 
# type, val and color key-value pairs as arguments to the initializer.
# This example that creates the same three tone color scale as 
# Axlsx::ColorScale.three_tone
color_scale = Axlsx:ColorScale.new({:type => :min, :val => 0, :color => 'FFF8696B'},
                 {:type => :percent, :val => '50', :color => 'FFFFEB84'},
                 {:type => :max, :val => 0, :color => 'FF63BE7B'})