设置区域图openpyxl的透明度(alpha)

时间:2017-03-22 11:23:23

标签: python openpyxl

我想使用openpyxl为区域图的背景设置透明度。我对图表的代码是:

from openpyxl.drawing.fill import PatternFillProperties, ColorChoice

c2 = AreaChart()
c2.grouping = 'stacked'
c2.add_data(data, titles_from_data=True)

c2_s1 = c2.series[0]
fill = PatternFillProperties()
fill.background = ColorChoice(srgbClr="FFFFFF")

c2_s2.graphicalProperties.pattFill = fill

我尝试过使用rgba十六进制编码。

fill.background = ColorChoice(srgbClr="80FFFFFF")

我也尝试使用SystemColor,但我找不到任何使用它的例子,我所做的每一次尝试都不成功

3 个答案:

答案 0 :(得分:0)

  

来自文档
      值必须为class openpyxl.drawing.effect.AlphaBiLevelEffect

类型

search PatternFillProperties
PatternFillProperties
如果这对您有用,请回来并将您的问题标记为已回答,或者为什么不对其进行评论。

答案 1 :(得分:0)

我怀疑在没有修改openpyxl源的情况下,您目前无法做到的事情。有关详细信息,请参阅"this pull request"

答案 2 :(得分:0)

扩展ColorChoice

from openpyxl.compat import unicode
from openpyxl.descriptors import Typed
from openpyxl.descriptors.serialisable import Serialisable
from openpyxl.descriptors.nested import NestedInteger
from openpyxl.xml.constants import DRAWING_NS


class MyRGBColor(Serialisable):
    tagname = 'srgbClr'
    namespace = DRAWING_NS
    val = Typed(expected_type=unicode)
    alpha = NestedInteger(allow_none=True)
    __elements__ = ('alpha', )

    def __init__(self, val, alpha=None):
        self.val = val
        self.alpha = alpha


class MyColorChoice(ColorChoice):
    srgbClr = Typed(expected_type=MyRGBColor, allow_none=True)

..

c2_s1.graphicalProperties.solidFill = MyColorChoice(
        srgbClr=MyRGBColor('0000FF', alpha=50000))