利用xlwings库,实现文件名与excel表格内容的极大似然匹

2022-04-05  本文已影响0人  不懂球的2大业

1.背景

工作中使用表格,经常会遇到这样的需求:收到一大堆的文件,需要将文件名与表格中的数据进行匹配,从而查找出来没有收到的文件。

笔者最近遇到一个实际问题,收到了300多家企业的承诺书照片,这些承诺书文件名是企业的名称,同时excel表格中每行保存着企业的信息,其中第一列是企业的名称。需要对交过承诺书的企业,在表格上进行标注,单元格背景标黄,以此来筛选出没交承诺书的企业。

要是一个个的Ctrl + F进行查找,费事费力。笔者通过Python相关库,来实现自动化匹配。

2.实现

import xlwings as xw
import os

# 打开excel文件
app = xw.App(visible=False,add_book=False)
# excel的文件路径
filepath = './myexcel.xlsx'
wb = app.books.open(filepath)

# 对excel的sheet1操作
sht = wb.sheets('Sheet1')
# 将当前文件夹下的文件名保存在列表中
doc = os.listdir()

# 对列表中的文件名称处理,去掉后缀,比如123.jpeg->123
for i in range(len(doc)):
    index = doc[i].rfind('.')
    doc[i] = doc[i][0:index]

# 获取excel表格的行数和列数
nrows = sht.api.UsedRange.Rows.count
ncolumns = sht.api.UsedRange.Columns.count

# 对excel单元格每一行遍历,若行首单元格名称存在于列表中,则将其背景标黄
for i in range(1,nrows+1):
    item = sht.range(f'A{i}')
    if item.value in doc:
        item.color = (255,255,0)

# 对excel表格关闭保存
wb.save()
wb.close()
app.quit()

3.存在不足与后续改进

参考文献:

1.xlwings清理excel内容及设置sheet背景颜色
2.Python模块之xlwings模块学习笔记(一)

上一篇 下一篇

猜你喜欢

热点阅读