一、需求说明

首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名。同个年度的总表在年末可能会有两、三百个工作表,同时每个表中可能也存在千余份档案信息。表格形式如下(为了直观呈现本例以7个工作表和十余份档案的形式呈现)

需要完成的操作:为了方便审查特定档案信息,需要给出档案名后生成一份新表,该表包含指定档案在所有日期(即所有工作表)中的记录。最终结果如下(以档案x003为例):

也就是老板说:给我把这几百个表格中所有包含档案x003的相关数据全部找到并整理个新的表格给我!

二、步骤分析

正式写代码前可以把需求分析清楚,将复杂问题简单化。

说白了,这个需求要求把所有日期工作表中的特定行都提取出来整合成一个新表。那么我们可以遍历每一张表,然后遍历第一列(名称列,也可以看作A列)每一个有数据的单元格,如果单元格中的文字为我们需要的档案名,就把这一行提取出来放到新的表格中,进一步梳理步骤为

  • 建立一个新的EXCEL工作簿
  • 新表的表头和档案记录Excel中的一样,也是名称、配置、提交日期等
  • 遍历档案记录Excel的每一张工作表sheet,再遍历第一列每一个有数据的单元格,对内容进行判断
  • 找到符合条件的单元格后获取行号,根据行号将当前表中的特定行提取出来,并将行追加新创建的表中
    分析清楚就可以着手写代码了

三、Python实现

首先导入需要的库本例中涉及旧表的打开和新表的创建,因此需要从openpyxl导入load_workbook和Workbook(如果是ppt和word用到的模块就更智能了,一个方法就能搞定)

from openpyxl import load_workbook, Workbook

接着导入旧表及创建新表

# 从桌面上获取总表
filepath = r'C:\Users\chenx\Desktop\台账.xlsm' # 根据实际情况进行修改
workbook = load_workbook(filepath)
# 创建新的Excel工作簿获取到工作表
new_workbook = Workbook()
new_sheet = new_workbook.active# 给新表写入表头
new_headers = ['名称', '配置', '提交日期', '受限操作', '操作时间', '状态', '存储位置']
new_sheet.append(new_headers)

现在是核心步骤:多次遍历,可以用workbook.sheetnames获取工作簿所有工作表名称的列表,然后遍历即可

for i in workbook.sheetnames:sheet = workbook[i]# 获取档案名称所在列names = sheet['A']

按照前面的分析,需要遍历名称列,判断每一个单元格的值是不是需要的档案名。这里应注意,如果已经循环到需要的单元格,就可以停止循环了,但一定要把符合单元格的行号传递给一个变量做记录,不然一旦break出循环就没有记忆了

flag = 0
for cell in names:
if cell.value == keyword: # 这里的keyword就是档案名,可以以 档案x003 为例flag = cell.rowbreak

获得到符合条件的行号后用sheet[flag]就可以拿到符合行了。openpyxl不支持旧表的一整行写入新表,因此应对策略就是将这一行的所有单元格具体值组装成一个列表,用sheet.append(列表)的方法写入新表,遍历部分的完整代码如下:

    for i in workbook.sheetnames:sheet = workbook[i]names = sheet['A']flag = 0for cell in names:if cell.value == keyword:flag = cell.rowbreakif flag:   # 如果flag没有被修改则不需要顺序进行下列代码data_lst = []for cell in sheet[flag]:# 这里加上一个对内容的判断,是让无内容的行直接放空,而不是写入一个 noneif cell.value:  data_lst.append(str(cell.value))else:data_lst.append(' ')new_sheet.append(data_lst)

最后记得保存

参考链接 :
Python自动化(十二):一分钟搞定几百个Excel中查找的数据:https://mp.weixin.qq.com/s/GGmpdHbB5pCyJ0IjaInDWQ

Python自动化(十二):一分钟搞定几百个Excel中查找的数据相关推荐

  1. python自动数据分析_老板让我从几百个Excel中查找数据,我用python一分钟搞定!...

    相信大家最近都快被python烦死了,朋友圈,公众号推文,小视频上都是关于python的广告,什么面试录取会用python的人,刚来的同事因为会用python升职加薪啦等等.但是小编觉得,python ...

  2. 从数百个Excel中查找数据,一分钟用Python搞定

    作者 | 陈熹 来源 | 早起Python 今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大. 需求说明 首先我们来看下今天的需求,有一份档案记录 ...

  3. openpyxl写入一行数据_老板让我从几百个Excel中查找数据,我用Python一分钟搞定!...

    以下文章来源: 早起Python 作者:陈熹 大家好,又到了Python办公自动化系列. 今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大! 一. ...

  4. python批量分析表格_老板让我从几百个Excel中查找数据,我用Python一分钟搞定!...

    以下文章来源: 早起Python 作者:陈熹 大家好,又到了Python办公自动化系列. 今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大! 一. ...

  5. python底层原理 知乎_用Python写代码,一分钟搞定一天工作量,同事直呼:好家伙...

    来源:早起Python 作者:陈熹.刘早起 大家好,我是早起. 前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下. 由于涉及文件私密 ...

  6. python实现excel搜索_从几百个Excel中查找数据,用Python一分钟搞定

    今天给大家分享一个真实的办公自动化需求,日常办公肯定都会遇到的,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大! 一.需求说明 首先我们来看下今天的需求,有一份档案记录总表的Ex ...

  7. 内部流出: 66个经典数据分析神技汇总,10分钟搞定一天工作!

    不会吧,都2022年了, 还有人在网盘.B站里学"Excel的用法和表格模板"? 宝~ 那忒麻烦了,还不靠谱 今个,分享你一 华为内部流出的  Excel学习资源! 1.用Vloo ...

  8. python使用教程pandas-十分钟搞定pandas(入门教程)

    本文是对pandas官方网站上<10Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook .习惯上 ...

  9. python如何高效使用excel_高效办公必备:你加班做的 Excel数据汇总,我用Python一分钟搞定!...

    原标题:高效办公必备:你加班做的 Excel数据汇总,我用Python一分钟搞定! 广东优就业 IT互联网/资讯热点/技能干货 点左上方蓝字关注小U有礼物送~ 现如今无论是工作汇报.产品设计.后台设计 ...

最新文章

  1. 2022-2028年中国茶几玻璃行业市场研究及前瞻分析报告
  2. 专题8-Linux系统调用
  3. 树链剖分 ---- 2021杭电多校 1002 I love tree[详解]
  4. drupal7获取当前路径别名
  5. Linux vi/vim 操作命令大全
  6. linux随机数示例:随机产生以139开头的电话号码
  7. python getchar功能_getchar函数
  8. 基于socket的简单文件传输系统
  9. 饿了么element UIel-dialog弹出层/el-dialog修改默认样式不能在style scoped修改
  10. JavaEE_Spring Framework
  11. chrome离线安装包下载方法
  12. 如何找出当前活动桌面背景图像的位置/路径(Ubuntu 18.04,GNOME)?
  13. 计算机桌面图标乱码,电脑软件上的文字变乱码怎么办?怎么修复?
  14. 【优化理论】 共轭梯度下降算法实现
  15. 语句摘抄——第21周
  16. 推特狗狗档案数据集清洗分析及可视化
  17. 计算机电源输出电压 电流,电脑USB接口的输出电压以及电流你知道吗?
  18. 在JS中利用for...in循环遍历对象
  19. 少一点张扬,多一点谦虚;少一点英雄主义,多一点实事求是——读2008第11期《IT经理世界》
  20. 卖家被骗上万元,已报警立案-跨境知道

热门文章

  1. 复盘所有NLP比赛的TOP方案,专注NLP
  2. vue中怎么点击修改文字_杭州展馆设计中说明牌和说明文字怎么样才能使用最大化?...
  3. java创建内部面板类_java-RGB调色面板的实现(事件监听器之匿名内部类)
  4. python数据分析实例_Python数据分析及可视化实例之爬虫源码(05)
  5. c++ 拷贝构造函数 讲解
  6. juniper srx电话单通
  7. 一体机硬盘被格式化了的资料恢复法子
  8. c#+wpf项目性能优化之OutOfMemoryException解密
  9. MongoDB插入文档
  10. JAVA card 应用开发(六) 个人化数据的线路安全和数据安全