大家好,又到了Python办公自动化系列。

今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大!

很多人学习python,不知道从何学起。

很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。

很多已经做案例的人,却不知道如何去学习更加高深的知识。

那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!

QQ群:1097524789

一、需求说明

首先我们来看下今天的需求,有一份档案记录总表的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.row

break

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

for i in workbook.sheetnames:

sheet = workbook[i]

names = sheet['A']

flag = 0

for cell in names:

if cell.value == keyword:

flag = cell.row

break

if flag:   # 如果flag没有被修改则不需要顺序进行下列代码

data_lst = []

for cell in sheet[flag]:

# 这里加上一个对内容的判断,是让无内容的行直接放空,而不是写入一个 none

if cell.value:

data_lst.append(str(cell.value))

else:

data_lst.append(' ')

new_sheet.append(data_lst)

最后记得保存

new_workbook.save(r'C:\Users\chenx\Desktop\台账查询.xlsx')

小结

这是经过一定改编的真实案例,可见Python自动化办公确实能够帮助我们解放自己的双手,不过在写自动化脚本之前也要先拆分任务,明确思路再进行,如果对本文的代码和数据感兴趣可以在后台回复自动化获取。最后还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手,让复杂的工作自动化!

python如何筛选excel重复_老板让我从上千个Excel中筛选数据,利用Python分分钟解决!...相关推荐

  1. 老板让我从上千个Excel中筛选数据,利用Python分分钟解决!

    大家好,又到了Python办公自动化系列. 今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大! 一.需求说明 很多人学习python,不知道从何学 ...

  2. python无法打开微信登录_如何让你的微信登录界面地球转起来(利用python实现)...

    让微信地球转起来(python实现) 微信地球 手机重启后打开微信的一瞬间,会看到一幅有名的图片. 大概是站在月亮上看地球的效果.你有没有想过,如果上面那个地球转起来会是怎样? 效果图 素材 这里有两 ...

  3. 使用Python批量筛选上千个Excel文件中的某一行数据并另存为新Excel文件(下篇)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 野火烧不尽,春风吹又生. 大家好, ...

  4. python一键合并上千个Excel表(对不起!!因为这事,我和同事吵了一架)

    如果你觉得对你有用,留下一个赞再走,不过分吧!!谢谢!! 文章目录 一.老板的需求总是莫名奇妙 二.别人不帮你,你帮你自己 三.上干货,看不懂,我买飞机票给你 四.上代码:(每一步都有注释,完全不用担 ...

  5. python操作word填表_#如何将现有的数据利用python 填入word的表格中?#

    如何让Word表格中的数据自动填入到Excel表格中 你好 在插入对象中,建立一个数据源 怎么把excel中的数据批量导入到word中的表格中 1.首先打开excel文件,随意复制文件一块区域. 2. ...

  6. wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...

    一.老板的需求总是莫名奇妙 老板需求:一天老板说,嘿!放牛娃,将这些excel表合并到一个总表里,下班前交给我 老板话刚讲完,我心里就想,这还不简单么,excel不就是有合并表的功能么!!简单的要死! ...

  7. python批量生成word报告_python自动生成word报告 | 如何将现有的数据利用python 填入word的表格中?...

    关于python连接SQL server数据库的问题? 你把完整的连接代码贴一下 如何将现有的数据利用python 填入word的表格中? VB,VBA我会,py不会哦 DB2教程推荐,新手想学习这个 ...

  8. 萧井陌 python培训千锋为中钞研究院提供Python培训,助力企业高效数据运营

    随着数字化时代到来,数字化应用所产生的各个维度的数据以几何速度不断递增,对企业来说掌握数据信息,得到有效数据结果,依据结果进行企业判断与决策是关乎企业发展的重中之重,所以,通过企业内训提升员工数据分析 ...

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

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

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

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

最新文章

  1. R语言ggplot2可视化条形图可视化控制底部和x轴之间没有空格实战:即条形图的底部直接和坐标轴连接
  2. debian linux修改语言,Debian Linux系统下英文系统切换为中文
  3. HBase总结(十三)HBase Shell 常用命令及例子
  4. [CDA数据分析师学习之路] 【CDA就业班独家发布】学习之路
  5. 二手手机交易平台使用MYSQL的方法_安卓Android校园淘(二手交易)APP设计与实现(MySQL)...
  6. 本地方法(JNI)——访问域+字符串参数
  7. 我今年挣了......
  8. 李开复:有三个AI专家就能估值7亿的时代过去了
  9. 【转】什么是磁珠(Ferrite Bead 即 FB)
  10. THUPC2019划水记
  11. linux 安装串口驱动安装失败,z-tek(求救Z-TEK串口安装失败,提示:该设备的驱动程序未被安装(代码28)这个inf中的服务安装段落无效?)...
  12. 轻松搞懂Linux中程序、进程、服务的区别及操作命令
  13. 计算机工程师相关政策,计算机中级工程师论文发表(发表时机和要求)
  14. 火狐浏览器打不开html,火狐浏览器打不开网页的原因及解决办法
  15. python之股票数据分析
  16. 我们会有我们的天长地久
  17. CANOE入门:CAPL语言(1)
  18. finalize()用法
  19. hihoCoder1054—滑动解锁(深搜)
  20. 英特尔的指令集体系结构_INTEL 体系结构 MMX™ 技术开发者手册

热门文章

  1. SLAM学习入门(1)针孔相机模型公式推导
  2. 相机模型(针孔模型+畸变模型)
  3. 【基础知识】~ 建立时间/保持时间
  4. 浅谈ACL在校园网中的应用
  5. 读取图片信息并存储数据为CSV文件
  6. 面试过程中应注意的问题与禁忌
  7. 开始启航:Redis中国用户会(CRUG)首次常委会召开 选出主席和校长
  8. Oracle SQL基础
  9. 【最后一天报名】数据科学峰会分论坛:供应链、用户增长、电商零售
  10. 什么是RFID? 射频识别技术的特点及工作原理!