You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的xlwings库获取/设置工作表标签颜色

xlwings设置/获取工作表标签颜色实现方案

以下是xlsxwriter官方文档提供的工作表标签颜色设置示例:

import xlsxwriter

workbook = xlsxwriter.Workbook('tab_colors.xlsx')

# 新建工作表
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()

# 设置标签颜色
worksheet1.set_tab_color('red')
worksheet2.set_tab_color('green')
worksheet3.set_tab_color('#FF9900')  # 橙色

# worksheet4使用默认标签颜色

workbook.close()

xlwings的高层Sheet类确实没有直接封装标签颜色相关的属性和方法,但可以通过调用底层API实现完全一致的获取、设置功能,覆盖Windows和macOS端。

基础实现方式

直接调用工作表对象的底层api接口操作Tab属性即可:

设置标签颜色

import xlwings as xw

wb = xw.Book()  # 新建或打开目标工作簿
ws1 = wb.sheets[0]
ws2 = wb.sheets.add()
ws3 = wb.sheets.add()
ws4 = wb.sheets.add()

# 方式1:传入RGB三元组设置颜色
ws1.api.Tab.Color = (255, 0, 0)  # 红色
ws2.api.Tab.Color = (0, 255, 0)  # 绿色
# 方式2:传入BGR顺序的十六进制整数值,对应#FF9900橙色
ws3.api.Tab.Color = 0x0099FF
# 如需重置为默认标签色,给属性赋值False即可
# ws1.api.Tab.Color = False

注意:跨平台使用时建议优先传RGB三元组,避免十六进制值因平台接口差异出现颜色错位问题。

获取标签颜色

直接读取Tab.Color属性即可拿到当前标签的颜色值,未设置自定义颜色的标签会返回False或None:

current_color = ws1.api.Tab.Color

对齐xlsxwriter调用习惯的封装

如果需要和xlsxwriter的set_tab_color方法保持一致的调用体验,可以直接给xlwings的Sheet类挂载自定义方法,支持传入命名颜色、十六进制颜色字符串、RGB元组:

from xlwings import Sheet

def set_tab_color(self, color):
    color_map = {
        'red': (255, 0, 0),
        'green': (0, 255, 0),
        'orange': (255, 153, 0),
        'blue': (0, 0, 255),
        'yellow': (255, 255, 0),
        'purple': (128, 0, 128)
    }
    if color is None:
        self.api.Tab.Color = False
        return
    if isinstance(color, str):
        if color.startswith('#'):
            hex_str = color.lstrip('#')
            r = int(hex_str[0:2], 16)
            g = int(hex_str[2:4], 16)
            b = int(hex_str[4:6], 16)
            self.api.Tab.Color = (r, g, b)
        else:
            self.api.Tab.Color = color_map[color.lower()]
    elif isinstance(color, (tuple, list)) and len(color) == 3:
        self.api.Tab.Color = tuple(color)

Sheet.set_tab_color = set_tab_color

封装完成后,调用逻辑和xlsxwriter完全一致:

ws1.set_tab_color('red')
ws2.set_tab_color('green')
ws3.set_tab_color('#FF9900')

内容的提问来源于stack exchange,提问作者Romain Capron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:09:35