如何使用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
相关产品推荐
相关产品推荐

