简介

现在有个需求,我们根据需要 data.xlsx 中某些单元格的内容来查找 find.xlsx 中的某些內容。

数据内容(为了数据安全,所有数据均已模糊处理)

data.xlsx内容:

find.xlsx内容:

任务目的

从data.xlsx中获取姓名,学号字段,然后在find.xlsx中根据姓名查找000字段,将匹配到的000字段,姓名和学号字段写入保存到新文件中。

思路过程

核心模块:openpyxl

  1. 读取data.xlsx文件,然后遍历所有行,将姓名和学号保存到字典1中。

  2. 读取find.xlsx文件,遍历所有行,将姓名和000保存到字典2中。

  3. 创建新xlsx文件,遍历字典1,如果name也在字典2中,则保存到新xlsx文件中。

实现代码

import openpyxl

# 加载第一个Excel
wb1 = openpyxl.load_workbook("data.xlsx") # 加载Excel文件
ws1 = wb1[wb1.sheetnames[0]] # 获取第一张数据表
# 加载第二个Excel
wb2 = openpyxl.load_workbook("find.xlsx") # 加载Excel文件
ws2 = wb2[wb2.sheetnames[0]] # 获取第一张数据表
# 表名.cell(row=r,column=c).value 获取指定单元格内容
sno_d = {} #字典1,key:name;value:sno
id_d = {} #字典2,key:name;value:id # 1.从表1中获取所有数据,保存到字典中
for r in range(3,ws1.max_row):
# 获取数据
name = ws1.cell(row=r, column=3).value
sno = ws1.cell(row=r, column=4).value
# 保存数据到字典1中
sno_d[name] = sno
# 2.遍历表2,寻找对应的id
for r in range(4,ws2.max_row):
# 获取数据
name = ws2.cell(row=r, column=3).value
ID = ws2.cell(row=r, column=2).value
# 保存数据到字典1中
id_d[name] = ID # 3.写数据到Excel文件中
save_excel = openpyxl.Workbook()
save_sheet = save_excel.active # 获取当前活动的表,就是第一张表
save_sheet['A1'] = "姓名"
save_sheet['B1'] = "学号"
save_sheet['C1'] = "000" # 写入数据
r = 2
# 遍历第一个字典
for name in sno_d:
# 判断是否在第二个字典中
if name in id_d:
save_sheet.cell(row=r, column=1).value = name
save_sheet.cell(row=r, column=2).value = str(sno_d[name])
ID = id_d[name]
save_sheet.cell(row=r, column=3).value = ID[-6:-1]+ID[-1]
print(f"正在保存第{r-1}条数据...姓名为:{name}")
r = r + 1
save_excel.save("学号对应表.xlsx")
print("保存完成!")

运行截图

数据文件下载;

data.xlsx

find.xlsx

Python对两个Excel操作的更多相关文章

  1. Python比较两个excel文档内容的异同

    #-*- coding: utf-8 -*- #比对两个Excel文件内容的差异#---------------------假设条件----------------#1.源表和目标表格式一致#2.不存 ...

  2. Python基础学习七 Excel操作

    python操作excel,python操作excel使用xlrd.xlwt和xlutils模块, xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的. ...

  3. python——使用xlwing库进行Excel操作

    Excel是现在比不可少的数据处理软件,python有很多支持Excel操作的库,xlwing就是其中之一. xlwings的安装 xlwings库使用pip安装: 在控制台输入 pip instal ...

  4. python excel操作

    python操作excel表格(xlrd/xlwt)转载:http://www.cnblogs.com/zhoujie/p/python18.html   最近遇到一个情景,就是定期生成并发送服务器使 ...

  5. python excel操作总结

    1.openpyxl包的导入 Dos命令行输入 pip install openpyxl==2.3.3 这里注意一下openpyxl包的版本问题 版本装的太高有很多api不支持了,所以笔者这里用的是2 ...

  6. 【Python】 更棒的Excel操作模块xlwings

    [xlwings] 说到Python操作Excel,有好多模块都可以支持这个工作.比如最底层的win32模块不仅可以操作Excel,还可以操作其他一众windows的软件. 其他的比较熟悉的有xlrd ...

  7. python 对excel操作用法详解

    在python中,对excel表格读,写,追加数据,用以下三个模块: 1.wlrd 读取excel表中的数据 2.xlwt 创建一个全新的excel文件,然后对这个文件进行写入内容以及保存. 3.xl ...

  8. python笔记8 - excel操作

    前提: python操作excel需要使用的模块有xlrd.xlwt.xlutils.对excel进行读.写.更新操作.操作excel时需要先导入这些模块,demo如下: excel-读操作知识点: ...

  9. python 的两个模块xlwt,xlrd,写入和读取Excel数据

    http://www.cnblogs.com/fireme/p/3887284.html 这上面写的很全,不过我只需要简单的读和写的操作就ok了,下面是我写的读和写入Excel操作 读取Excel数据 ...

  10. python中的excel操作

    一. Excel在python中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到.测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. Excel中 ...

随机推荐

  1. Redis中 HyperLogLog数据类型使用总结

    转载请注明出处: 目录 1. HyperLogLog 的原理 2.使用步骤 3.实现请求ip去重的浏览量使用示例 4.Jedis客户端使用 5.Redission使用依赖 6.HyperLogLog ...

  2. 干货来袭!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第3天)概率分析篇:条件概率、全概率与贝叶斯公式

    第1天:线性代数篇:矩阵.向量.实战编程 第2天:微积分篇:极限与导数.梯度下降.积分.实战编程 第3天:概率分析篇:条件概率与全概率.贝叶斯公式.实战项目 目录 前言 一.概率与机器学习 1.1 概 ...

  3. python安装robotframework的一些常见的错误

    python安装robotframework的一些常见的错误 首先的电脑环境是x86的,然后下载的python版本起初是3.10.1的 在cmd 中出入pip install robotframwor ...

  4. 如何获取obs视频帧的二进制数据

    前面几篇文章梳理了obs的录屏和推流流程,几条纵线整理下来,算是基本理清了obs的工作流程. 现在回到第一个目标:捕捉桌面的帧数据,用rendertarget显示并输出到UE5材质. 那么,帧数据到底 ...

  5. 《操作系统导论》读书笔记1——CPU虚拟化,进程

    系列文章目录和关于我 一丶CPU的虚拟化 一个桃子,我们称之为物理(physical)桃子.但有很多想吃这个桃子的 人,我们希望向每个想吃的人提供一个属于他的桃子,这样才能皆大欢喜.我们把给每个 人的 ...

  6. wsl 中 docker-compose 搭建 kafka 集群出现的外部访问错误

    在 wsl 中用 docker-compose 搭建了一台 zookeeper + 三台 broker 的 kafka 集群,使用的镜像是 bitnami/kafka,在按照镜像文档运行容器后,发现运 ...

  7. 剑指 offer 第 3 天

    第 3 天 字符串(简单) 剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are h ...

  8. 迁移学习(SPI)《Semi-Supervised Domain Adaptation by Similarity based Pseudo-label Injection》

    论文信息 论文标题:Semi-Supervised Domain Adaptation by Similarity based Pseudo-label Injection论文作者:Abhay Raw ...

  9. golang常用库包:log日志记录-uber的Go日志库zap使用详解

    Go 日志记录库:uber-go 的日志操作库 zap 使用 一.简介 zap 是 uber 开源的一个高性能,结构化,分级记录的日志记录包. go1.20.2 zap v1.24.0 zap的特性 ...

  10. 升级:Logical Upgrade升级MySQL5.6.26

    升级需谨慎,事前先备份 MySQL升级的实质是对数据字典的升级,数据字典有:sys.mysql.information_schema.performance_schema . MySQL升级的两种方式 ...