下面是“Python中openpyxl实现vlookup函数的实例”的完整实例教程:
介绍
openpyxl
是 Python 用来操作 Excel 文件的库,可以方便的读写 Excel 文件。在实际工作中,我们会经常需要根据某一列的值从另一个表格中找到对应的值,这个场景下就用到了 vlookup
函数。我们可以使用 openpyxl
模块来实现这个功能。
实例1: 使用vlookup函数从另一个表格中获取值
首先,我们需要准备两个 Excel 文件,一个是源文件(source.xlsx), 一个是参照文件(lookup.xlsx)。在参照文件中,我们会查找名字对应的ID。
链接: https://pan.baidu.com/s/1KPblTWG6WWtDSfT_PVEZIg 密码: vapo
在源文件中,每个人的名字可以对应一个分数。我们需要将每个人的分数添加到参照文件中。桥梁就是vlookup
函数。我们需要在参照文件中的 ID 列中查找源文件中的名字,并且在相应的行中填写分数。代码如下:
from openpyxl import load_workbook
source_file = 'source.xlsx'
lookup_file = 'lookup.xlsx'
source_wb = load_workbook(source_file, read_only=True)
lookup_wb = load_workbook(lookup_file)
lookup_ws = lookup_wb.active
# 获取名字和分数
source_ws = source_wb.active
names = [cell.value for cell in source_ws['A'][1:]]
scores = [cell.value for cell in source_ws['B'][1:]]
# 填写分数到参照文件中
for row in lookup_ws.iter_rows(min_row=2, min_col=1, max_col=2):
id_cell, name_cell = row
for i, name in enumerate(names):
if name == name_cell.value:
score = scores[i]
lookup_ws.cell(row=id_cell.row, column=3, value=score)
break
# 保存参照文件
lookup_wb.save(lookup_file)
运行上面的代码后,参照文件中的第三列里,每个 ID 对应的分数都填好了。
实例2: 使用vlookup函数比较两个表格内容是否一致
实际工作中,我们有时需要对比两个 Excel 文件中的数据是否一致。这时就可以使用 vlookup
函数来实现,首先我们先要得到两个文件的 MD5
值,然后将它们的值进行比较。代码如下:
import hashlib
from openpyxl import load_workbook
file1 = 'source.xlsx'
file2 = 'target.xlsx'
# 获取MD5值
def getFileMd5(filename):
with open(filename, 'rb') as f:
md5obj = hashlib.md5()
md5obj.update(f.read())
hash = md5obj.hexdigest()
return hash
source_md5 = getFileMd5(file1)
target_md5 = getFileMd5(file2)
if source_md5 == target_md5:
print('两个文件内容一致')
else:
source_wb = load_workbook(file1, read_only=True)
target_wb = load_workbook(file2, read_only=True)
source_ws = source_wb.active
target_ws = target_wb.active
for cell in source_ws['A']:
col_index = cell.col_idx
name = cell.value
if name is None:
break
for row in target_ws.iter_rows(min_row=2, min_col=col_index, max_col=col_index):
if row[0].value == name:
if cell.offset(column=1).value != row[0].offset(column=1).value:
print(f'{name}文件内容不一致')
break
else:
print(f'{name}在目标文件中不存在')
运行上面的代码后,如果两个文件的 MD5
值不一致,代码会输出所有不一致的地方。如果 MD5
值一致,代码会输出“两个文件内容一致”。
以上就是两个使用 openpyxl
实现 vlookup
函数的例子。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中openpyxl实现vlookup函数的实例 - Python技术站