Python设置Excel单元格中的部分文本颜色

发布于:2024-08-01 ⋅ 阅读:(156) ⋅ 点赞:(0)

一、概述

openpyxl (目前)不支持设置单元格内部分字体颜色
xlsxwriter 支持设置单元格内部分字体颜色(创建新的Excel)

二、效果

在这里插入图片描述

三、示例

"""
Python设置Excel单元格中的部分文本颜色

openpyxl 不支持设置单元格内部分字体颜色
xlsxwriter 支持设置单元格内部分字体颜色(创建新的Excel)

pip install xlsxwriter -i https://pypi.tuna.tsinghua.edu.cn/simple
"""

import xlsxwriter


def highlight_phrase_in_cell(workbook, worksheet, row_idx, col_idx, phrases_to_highlight, cell_value):
    """
    使用 xlsxwriter 将单元格内的特定短语标红。
    :param workbook: Workbook 对象
    :param worksheet: Worksheet 对象
    :param row_idx: 行索引
    :param col_idx: 列索引
    :param phrases_to_highlight: 需要高亮的短语列表
    :param cell_value: 单元格的内容
    :return: None
    """
    if not cell_value:
        return

    # 初始化 rich_string 列表
    rich_string = []
    start = 0

    # 按照位置顺序高亮短语
    while start < len(cell_value):
        # 找到最早出现的短语及其位置
        next_phrase = None
        next_idx = len(cell_value)
        for phrase in phrases_to_highlight:
            idx = cell_value.find(phrase, start)
            if idx != -1 and idx < next_idx:
                next_phrase = phrase
                next_idx = idx

        if next_phrase is None:
            break

        # 添加之前的普通文本
        if start < next_idx:
            rich_string.append(cell_value[start:next_idx])

        # 添加高亮文本
        rich_string.append(workbook.add_format({'font_color': 'red'}))
        rich_string.append(next_phrase)
        start = next_idx + len(next_phrase)

    # 添加剩余的普通文本
    if start < len(cell_value):
        rich_string.append(cell_value[start:])

    # 写入 rich_string 到单元格
    worksheet.write_rich_string(row_idx, col_idx, *rich_string)


if __name__ == '__main__':
    workbook = xlsxwriter.Workbook('example.xlsx')
    worksheet = workbook.add_worksheet()

    cell_value = '一泰方合作伙伴表示,中泰两国关系源远流长,在经贸关系、人文交流领域关系密切。'
    phrases = ['源远流长', '人文交流']

    highlight_phrase_in_cell(workbook, worksheet, 0, 0, phrases, cell_value)

    workbook.close()

网站公告

今日签到

点亮在社区的每一天
去签到