Python中openpyxl实现vlookup函数的实例

yizhihongxing

下面是“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中,我们可以使用正则表达式的语法来匹配字符串中的数字。下面是一些常用的正则表达式语法: \d:匹配任意数字字符。 \D:匹配任意非数字字符。 \s:匹配任意空白字符,包括空格、制表符、换行符…

    python 2023年5月14日
    00
  • 创建一个充满所有零的Numpy数组

    创建一个充满所有零的Numpy数组的完整攻略如下: 步骤1:导入Numpy库 在使用Numpy创建数组之前,需要导入Numpy库。 import numpy as np 步骤2:使用np.zeros()函数创建全零数组 使用np.zeros()函数可以创建一个全零数组,函数的参数可以指定数组的形状,可以是一个整数,也可以是一个元组。 # 创建一个长度为5的全…

    python-answer 2023年3月25日
    00
  • Python 函数的递归详解

    Python 函数的递归详解 什么是递归?为什么要使用递归? 递归是一种在函数中通过调用自身来实现的算法。递归函数包含了一个基本案例和一个或多个递归的案例。 递归算法通常用于解决需要重复处理相同问题的情况。在这种情况下,递归允许您每次处理相同的问题,但以不同的方式操作数据。 使用递归,我们可以将一个复杂的问题分解为若干个简单的问题,然后依次解决。这使得递归在…

    python 2023年6月5日
    00
  • Python数据结构与算法中的队列详解(1)

    Python数据结构与算法中的队列详解(1) 队列是一种常见的数据结构,它遵循先进先出(FIFO)的原则。在Python中,我们可以使用列表来实现队列。本文将介绍队列的基本概念、实现方式和常见操作。 队列的基本概念 队列是一种线性数据结构,它支持两个基本操作:入队和出队。入队操作将一个元素添加到队列的末尾,出队操作将队列的第一个元素删除并返回。队列的另一个重…

    python 2023年5月14日
    00
  • Python调用shell命令常用方法(4种)

    以下是详细讲解“Python调用shell命令常用方法(4种)”的完整攻略,包含两个示例说明。 1. 使用os.system()函数 在Python,我们可以使用os.system()函数来调用shell命令。os.system()函数的法如下: os.system(command) 其中command参数是要执行的shell命令。 以下是一个使用os.sy…

    python 2023年5月14日
    00
  • python 实现关联规则算法Apriori的示例

    下面是详细讲解“Python实现关联规则算法Apriori的示例”的完整攻略,包括算法原理、Python实现和两个示例说明。 算法原理 Apriori算法是一种常用的关联规则挖掘算法,其基本思想是通过扫描数据集,找出频繁项集,然后利用频繁项集生成关联规则。具体步骤如下: 扫描数据集,统计每个项的支持度; 根据最小支持度阈值,筛选出频繁项集; 根据频繁1项集,…

    python 2023年5月14日
    00
  • python多进程使用函数封装实例

    下面是一份Python多进程使用函数封装的实例攻略: 什么是Python多进程 在介绍如何使用Python多进程实现函数封装前,我们先来了解一下Python多进程的基本概念。 Python多进程是指在一个Python程序中同时运行多个进程的能力。该进程可以执行各自独立的任务,并在需要时相互通信。 Python多进程的优点在于可以利用多核处理器的性能,提高程序…

    python 2023年5月19日
    00
  • Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】

    下面我来详细讲解一下”Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】”的方法。 1. 将字符串转换为列表 首先,我们需要将字符串转换为列表。这可以通过 python 内置的 list() 函数实现。 s = "hello" lst = list(s) # 输出 [‘h’, ‘e’, ‘l’, ‘l’, ‘…

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