我需要提取所有具有条件格式的单元格的列表,其中它们可能会因条件格式而被突出显示为黄色.我曾try 使用openxpyxl来做到这一点,但它只会给我一个包含条件格式规则的所有单元格的列表,无论该规则是否会导致黄色、红色、蓝色等突出显示.我无法让pywin 32或xlwings这样做,因为它们运行得太慢了.

当前openpyxl代码:

wb_openpyxl = openpyxl.load_workbook(filename)
ws_openpyxl = wb_openpyxl["Sheet1"]
for cf in ws_openpyxl.conditional_formatting:
     print(cf)

#<ConditionalFormatting A5:A9>

预期结果:

条件格式A5:如果a5 0,则A9,(十六进制 colored颜色 与黄色相关)

推荐答案

以下将根据实际使用的规则提取具有某些格式的CF详细信息.

默认情况下, colored颜色 是十六进制,但如果您想看到"黄色"而不是"FFFF 00",可以交叉匹配,但十六进制似乎没问题.

from openpyxl import load_workbook


wb_openpyxl = openpyxl.load_workbook(filename)
ws_openpyxl = wb_openpyxl["Sheet1"]

print('')
cs_list = ['Start', 'End']
for cf in ws_openpyxl.conditional_formatting:
    print(f"Conditional Format Range: {cf.cells}")
    print("Rules")
    for rule in cf.cfRule:
        if rule.colorScale:
            print(f"Rule: {rule.priority}: Color Scale")
            for idx, cs in enumerate(rule.colorScale.cfvo):
                print(f'{cs_list[idx]}: _Type: {cs.type} _Value: {cs.val} _Color: {rule.colorScale.color[idx].rgb[2:]}')
        else:
            print(f"Rule: {rule.priority}: Formula")
            print(f"Operation: {'Use a formula' if rule.operator is None else f'Format {rule.operator}'} "
                  f"{str(rule.formula)[1:-1]} "
                  f"Stop if True: {'Disabled' if rule.stopIfTrue is None else 'Enabled'}")
            print(f"bfColor: {rule.dxf.fill.bgColor.rgb[2:]}")
            print(f"endColor: {rule.dxf.fill.end_color.rgb[2:]}")
            print(f"fgColor: {rule.dxf.fill.fgColor.rgb[2:]}")
        print('-----------------------')

Python相关问答推荐

如何处理嵌套的SON?

将整组数组拆分为最小值与最大值之和的子数组

'discord.ext. commanders.cog没有属性监听器'

将图像拖到另一个图像

通过pandas向每个非空单元格添加子字符串

django禁止直接分配到多对多集合的前端.使用user.set()

OR—Tools CP SAT条件约束

Python解析整数格式说明符的规则?

为什么抓取的HTML与浏览器判断的元素不同?

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

在极中解析带有数字和SI前缀的字符串

如何使用两个关键函数来排序一个多索引框架?

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

Python 3试图访问在线程调用中实例化的类的对象

为什么t sns.barplot图例不显示所有值?'

从嵌套极轴列的列表中删除元素

Python类型提示:对于一个可以迭代的变量,我应该使用什么?

jsonschema日期格式

递归链表反转与打印语句挂起

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()