Python处理Excel数据—— 字体变为指定颜色

Posted 玛丽莲茼蒿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python处理Excel数据—— 字体变为指定颜色相关的知识,希望对你有一定的参考价值。

import numpy as np
import xlwt
import xlrd
from xlutils.copy import copy
import re
import xlsxwriter

indexSet = set()  # 为了去重
list = []

# 将txt存储为set和list
def txt_to_set_list():
    f = open('index.txt', encoding='utf-8')  # 读取为字符流(str
    for line in f:
        line = line.strip("\\n")
        indexSet.add(int(line.split(" ")[0]))  # str-->int,然后加入set中
        list.append(line.split(" ")[0])
        list.append(line.split(" ")[1])
    print(indexSet)
    print(list)

# 单元格上色
def color_excel(file_name):
    styleBlueBkg = xlwt.easyxf('pattern:pattern solid, fore_colour aqua;')  # 蓝色
    styleRedBkg = xlwt.easyxf('pattern:pattern solid, fore_colour red;')  # 红色
    rb = xlrd.open_workbook(file_name)  # 打开xls文件
    ro = rb.sheets()[0]  # 读取表单0
    wb = copy(rb)  # 利用xlutils.copy复制
    ws = wb.get_sheet(0)  # 获取表单0

    workbook = xlsxwriter.Workbook(file_name)  # 第二次读同一个文件,不知道是否可行?
    worksheet = workbook.add_worksheet()
    color = workbook.add_format('color': 'red', 'bold': True)

    col = 4  # 要匹配的都在第4列
    for i in range(ro.nrows):
        if i-1 in indexSet:  # 如果这一行在index.txt里(这一行是第i行,对应的id却是i-1,而txt里提取的正是id),命中!
            for j in range(10):  # --------(1)把这一行标蓝
                ws.write(i, j, ro.cell(i, j).value, styleBlueBkg)

            start = 0
            while str(i-1) in list[start:] and list.index(str(i-1), start):
                start = list.index(str(i-1), start)
                wantIndex = start + 1  # 在我们的list里,症状位于行数的下一个(+1
                start = start + 1  # 下次的起点
                # --------(2)获取第i行第4列的字符串,把匹配上的标红,然后再放回Excel单元格中
                rc = re.compile('.*list[wantIndex].*')  # 正则匹配
                sentence = ro.cell(i, col).value  # 获取第i行第4列的字符串
                format_ls = rc.split(sentence)
                for k in range(len(format_ls)-1, -1, -1):
                    if rc.fullmatch(format_ls[k]):
                        format_ls.insert(k, color)
                worksheet.write_rich_string(i, col, *format_ls)
                # ws.write(i, col, format_ls)  # 标红一个词就整个都放回去
    workbook.close()
    wb.save(file_name)



if __name__ == '__main__':
    file_name = 'xls.xls'
    txt_to_set_list()
    color_excel(file_name)

学习总结:

  • Python的4个主要数据结构,Python的List、Set、Dict相当于java的ArrayList、HashSet、HashMap
    • 熟练了List的使用
    • 熟练了Set的使用
  • 正则表达式 (import es)
  • conda install <-------->conda remove
  • workbook和worksheep
  • 知道了Python的字符串类型:str类型

以上是关于Python处理Excel数据—— 字体变为指定颜色的主要内容,如果未能解决你的问题,请参考以下文章

5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel

java导出excel字体大小不一样怎么处理

excel表格中数据重复6次以上如何变为红色,重复5次以下不变颜色?

Python 技术篇 - 操作excel实现单元格合并并居中实例演示,用openpyxl库为指定区域的单元格设置对齐样式和字体样式方法

python-openpyxl Excel的单元格样式设置,包括字体样式宽高等等!

Python处理大数据的技巧, 2022-06-21