Python中openpyxl实现vlookup函数的实例

下面是“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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python实现随机生成迷宫并自动寻路

    下面我来详细讲解一下“Python实现随机生成迷宫并自动寻路”的完整攻略。 简介 这个项目旨在使用Python生成随机迷宫并实现自动寻路的功能。具体实现过程如下: 随机生成迷宫 使用启发式搜索算法自动找到迷宫的出口 随机生成迷宫 要生成迷宫,我们可以采用深度优先搜索(DFS)和递归回溯算法。具体步骤如下: 创建一个NxM的矩阵,初始化所有元素为墙 从任意位置…

    python 2023年5月19日
    00
  • python使用Thread的setDaemon启动后台线程教程

    让我来给你详细讲解一下“python使用Thread的setDaemon启动后台线程教程”。 简介 Python中的Thread类提供了一种启动后台线程的方式,即使用setDaemon方法。在某些情况下,我们可能需要在主线程运行的同时运行一些后台线程,那么这些后台线程就可以使用setDaemon方法来实现。 setDaemon方法 setDaemon是Pyt…

    python 2023年5月19日
    00
  • python调用有道智云API实现文件批量翻译

    下面是详细讲解“python调用有道智云API实现文件批量翻译”的完整攻略。 一、前置条件 注册有道智云API账号,并获取应用的App Key和App Secret 安装Python requests库 二、代码实现 1.导入requests、hashlib和os库 import requests import hashlib import os 2.设置A…

    python 2023年5月19日
    00
  • python利用文件时间批量重命名照片和视频

    我来详细讲解一下“Python利用文件时间批量重命名照片和视频”的完整攻略。 1. 获取文件的创建时间 首先,我们需要获取每个文件的创建时间,可以使用Python自带的os库中的stat()函数来实现,代码如下: import os def get_create_time(file_path): # 获取文件创建时间 create_time = os.sta…

    python 2023年6月3日
    00
  • python中的lambda表达式用法详解

    Python中的Lambda表达式用法详解 Lambda表达式是Python中的一种匿名函数,它可以在一行代码中定义简单的函数。本文将详细讲解Python中的Lambda表达式用法,包括Lambda表达的语法、应用场景以及示例说明。 Lambda表达式的语法 Lambda表达式的语法非常简单,由关字lambda、参数列表和表达式组成。Lambda表达式的基本…

    python 2023年5月13日
    00
  • 利用Python如何生成随机密码

    生成随机密码可以通过Python中的random模块实现。下面是详细的步骤: 1. 导入random模块 首先需要在Python脚本中导入random模块,用于生成随机数、随机字符串。 import random 2. 指定密码长度和可能字符集 通过random模块生成的随机数,拼接起来即可获得随机密码。为了具有一定的安全性,需要指定密码长度,并且指定包含哪…

    python 2023年6月3日
    00
  • Python requests的SSL证书验证方式

    以下是关于Python requests的SSL证书验证方式的攻略: Python requests的SSL证书验证方式 在Python中,requests是一个流行的HTTP库,可以用于向Web发送HTTP请求和接响应。在使用requests库发送HTTPS请求时,我们需要进行SSL证书验证。以下是Python requests的SSL证书验证方式的攻略:…

    python 2023年5月14日
    00
  • Python学习之列表和元组的使用详解

    Python学习之列表和元组的使用详解 在Python中,列表(list)和元组(tuple)是两种常用的数据结构,它们可以存储多个元素。本文将详细讲解列表和元组的使用方法,并给两个示例说明。 列表(list)的使用 定义列表 在Python中,可以使用方括号([])来定义一个列表。例如下面的代码定义了一个包含5个元素的列表: my_list = [1, 2…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部