【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类型

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值