对于大部分的文秘,财务人员,管理人员,都会面临大量的Excel表格整理工作,当Excel表格超过100,甚至有1000个时,对于他们来说,无疑是个噩梦。

下面的场景,您是否熟悉:

  • 接收不同部门的大量Excel表格,按照指定的格式分类汇总,并在限定的时间内发送给部门领导;
  • 包含大量历史数据的Excel表格,需要按照新的格式要求重新整理;
  • 将很多个Word文档中的信息,整理到一个Excel表格中。

如果你也有这样的问题,那请您跟我一起往下看,好学青年我具备扎实的Python技术能力,最擅长帮您解决这些问题。

和上面真实场景一样,办公室文秘张三某天收到这样一个任务,领导要求张三要在当天汇总完毕,这可是公司最近6年的考核情况。

公司有多少员工呢?远远超过1000人!!

考核表具体是什么样呢?如下图所示。

个人考核表

1000+份表格

文秘张三收到这个任务后,按照日常工作习惯,张三先梳理下思路,新建一个最终的Excel表格。

逐个打开员工考核表,并将员工考核表信息拷贝到最终的Excel表格中,张三计划一上午搞定。

可是到了中午,老眼昏花,发现自己一顿操作猛如虎,一看才完成二分之五。

张三开一个文档,拷贝一个文档,同时还要处理其他事情,回来一看,又忘了自己刚刚处理哪个文档了,又重新确定进度。

直到下午下班的时候,张三依然没有完成,默默掏出手机,点个外卖,给家里打个电话,表示自己要加班完成任务。

张三的工作方法,和绝大多数办公室文秘人员、财务人员、行政人员的工作方法一样,我们一起来分析下,这样的方法有什么样的问题呢?

  • 容易出错。首先张三不可能一天只做这件事情,在同步完成其他事情时,精力一旦分散,就容易出现漏拷贝的情况,也可能出现重复拷贝的情况。
  • 效率低。一天的时间都不一定能够完成,其实我们完全可以用程序来解决,用程序可能10分钟就完成。 重复两遍的事情,都可以用程序来解决。

在学习这个技能之前,我们首先需要简单的Python基础,然后再学习今天要教的算法库,openpyxl。

为了降低理解程度,我们这里简化模型,假设所有员工具有相同的内容格式。

员工考核表

最终表格表头

最终表格尾部

我们按照如下的逻辑来完成任务:

  1. 新建最终表格工作簿,新建工作表;
  2. 生成工作表表头,设置列宽;
  3. 逐个打开单个员工考核表,读取相应单元格的内容,并设置到最终表格的相应单元格中;
  4. 按照指定的名称保存最终表格。

根据任务逻辑,大家聚精会神哈,好学青年要逐行解释代码了。

1、依赖库导入

from openpyxl import load_workbook, Workbook
import os

2、新建最终表格工作簿

targetWB = Workbook()

3、新建工作表

targetWS = targetWB.create_sheet('Sheet1', 0)

4、生成工作表表头

targetWS.cell(1, 1, '姓名')

在第一行第一列输入“姓名”,其他表头类似

5、设置列宽

targetWS.column_dimensions['A'].width = 7

第A列的宽度是7,其他表头类似。

6、逐个打开单个员工考核表

for table in os.listdir(tablePath):table = os.path.join(tablePath, table)wb = load_workbook(table, 'r')ws = wb['sheet1']

7、读取相应单元格的内容,并设置到最终表格的相应单元格中

for row in ws.iter_rows(min_row=2, max_row=7):targetWS.cell(currentRow, 1, row[0].value)targetWS.cell(currentRow, 2, row[1].value)

8、按照指定的名称保存最终表格。

tablePath = r"D:\考核表"
targetName = os.path.join(tablePath, "最终表格.xlsx")
targetWB.save(targetName)
targetWB.close()

从开始写代码,到完成最终表格的生成,最多只花了10分钟。

如果是Python零基础,您一定会觉得,为了完成这个功能,肯定要写很多复杂的代码。

实际上,有效代码行数少于30行。

下面我粘贴上了所有代码,你可以使用这些代码完全复现我的效果。

import os
from openpyxl import load_workbook, WorkbooktablePath = r"D:\考核表"
targetWB = Workbook()
targetWS = targetWB.activeheadList = ['姓名', '年份', '工作态度(20分)', '工作实绩(20分)', '工作能力(20分)', '出勤情况(20分)', '出差情况(20分)', '综合得分']
dimensionList = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
widthList = [7, 7, 15, 15, 15, 15, 15, 10]
for column in range(0, 8):targetWS.cell(1, column+1, headList[column])targetWS.column_dimensions[dimensionList[column]].width = widthList[column]currentRow = 2
for table in os.listdir(tablePath):table = os.path.join(tablePath, table)wb = load_workbook(table, 'r')ws = wb[wb.sheetnames[0]]for row in ws.iter_rows(min_row=2, max_row=7):for j, cell in enumerate(row):targetWS.cell(currentRow, j+1, cell.value)currentRow += 1targetName = "最终表格.xlsx"
targetWB.save(targetName)
targetWB.close()

基础知识

Excel

Excel表格分为三层结构,即工作簿—工作表—(行、列、单元格)。

我们在文件夹中看到的,以“xlsx”为后缀,能够通过双击打开的就是工作簿,以下图为例,“新建Microsoft Excel工作表.xlsx”就是工作簿。

工作簿可以包含多个工作表,以下图为例,即“sheet1”、"sheet2”。

每个工作表中包含多行多列,下图中的绿线即为行,行按照12345…来排序;红线为列,列按照ABCDEFG…来排序,红线和绿线的交接处就是单元格,下图中的G4就是单元格。

我们在使用Python自动化处理的过程中,就是按照先打开工作簿,再指定工作表,然后指定行、列或单元格来进行操作的。

Excel表格

openpyxl

openpyxl是一个功能非常强大的Python库,那openpyxl具有哪些功能呢?挑重点的来说:

  1. 创建新的工作簿;
  2. 加载已有工作簿;
  3. 新建工作表;
  4. 列举所有工作表;
  5. 打开指定工作表;
  6. 选择单个单元格;
  7. 选择多个单元格;
  8. 查询单元格属性(列索引、行索引、列名、行名、坐标、单元格类型、单元格样式);
  9. 设置单元格样式(字体、对齐方式、边框、填充);
  10. 设置行高、列宽;
  11. 单元格遍历;
  12. 合并单元格;
  13. 过滤和排序;
  14. 调用Excel自带公式;
  15. 保存工作簿。

通过巧妙地组合上述功能,您可以完成自己想要的效果。

上面这些功能的教程,会在我后续的专栏【Python办公自动化】中详细讲解。

如果你需要这些Excel表格作为案例,或者你需要我刚刚推荐的书籍《Python编程快速上手》,可以看我个人简介。

如果您在执行代码的过程中,有什么具体问题,可以在评论区直接留言,大家一起学习,一起进步。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题

检查学习结果。

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。

零Python编程基础,如何在10分钟内合并1000个Excel表格?相关推荐

  1. github创建静态页面_如何在10分钟内使用GitHub Pages创建免费的静态站点

    github创建静态页面 Static sites have become all the rage, and with good reason – they are blazingly fast a ...

  2. es6 ... 添加属性_如何在10分钟内免费将HTTPS添加到您的网站,以及为什么您现在不止需要这样做......

    es6 ... 添加属性 by Ayo Isaiah 通过Ayo Isaiah 如何在10分钟内免费将HTTPS添加到您的网站,以及为什么现在比以往更需要这样做 (How to add HTTPS t ...

  3. 如何在10分钟内开始使用MongoDB

    by Navindu Jayatilake 通过纳文杜·贾亚提莱克 如何在10分钟内开始使用MongoDB (How to get started with MongoDB in 10 minutes ...

  4. 如何在10分钟内构建交互式HTML5广告

    本文出生地传送门→→→→→如何在10分钟内构建交互式HTML5广告---静华网-一个有气质的网站 随着Flash的消亡,交互式广告的责任被传递给了HTML5.在这里,我们将学习如何在短短10分钟内建立 ...

  5. 以太坊区块链同步_以太坊69:如何在10分钟内建立完全同步的区块链节点

    以太坊区块链同步 by Lukas Lukac 卢卡斯·卢卡奇(Lukas Lukac) Ethereu M 69:如何在10分钟内建立完全同步的区块链节点 (Ethereum 69: how to ...

  6. javascript创建类_如何在10分钟内使用JavaScript创建费用管理器

    javascript创建类 by Per Harald Borgen 通过Per Harald Borgen 如何在10分钟内使用JavaScript创建费用管理器 (How to create an ...

  7. bootstrap设计登录页面_前端小白如何在10分钟内打造一个爆款Web响应式登录界面?...

    对于前端小白(例如:专注后端代码N年的攻城狮),自己编写一个漂亮的Web登录页面似乎在设计上有些捉襟见肘,不懂UI设计,颜色搭配极度的混乱(主色,辅助色,配色,色彩渐变,动画效果等等,看起来一堆乱七八 ...

  8. 【手把手】如何在10分钟内搭建一个以太坊私有链?

    在开发以太坊时,很多时候需要搭建一条以太坊私有链,这篇来自作者熊丽兵的文章,手把手教你10分钟内如何在Mac上进行搭建. 作者 | 熊丽兵 整理 | 科科 阅读本文前,你应该对以太坊语言有所了解,如果 ...

  9. python基础语言测试题(10分钟内背熟)

    1.可变数据类型 dictionary(不可变string tuple int ) 2.Python可以使用单引号( ' )来表示字符串 Python可以使用双引号( " )来表示字符串 P ...

最新文章

  1. 如何禁止NumPy自动跳过数组的中心部分并仅打印角点
  2. Python-time
  3. iOS开发的库的列表,不完全是开源库
  4. BMP图片的解析,关于压缩方式
  5. 使用DatagramSocket发送、接收数据(Socket之UDP套接字)
  6. 推荐系统炼丹笔记:阿里DMIN多重兴趣网络
  7. 基于SAML2.0的SAP云产品Identity Authentication过程介绍
  8. Android开发面试题之求一个数的N次幂手写算法
  9. flowable 数据库表结构 梳理
  10. java overriding_JAVA概念:Overloading与Overriding
  11. 【力扣】NO.13.罗马数字转整数
  12. Excel生成随机数
  13. C++基础::文件流
  14. 生成小程序二维码传参scene的问题
  15. 贪心算法及几个常用的例题
  16. php 生僻字 拼音,php 汉字转拼音 [包含20902个基本汉字+5059生僻字]
  17. tomcat配置前台访问日志记录
  18. php汉字utf8编码转换,PHP UTF8编码内的繁简转换类
  19. 贴吧云签到php源码,Tieba-Cloud-Sign: 百度贴吧云签到,在服务器上配置好就无需进行任何操作便可以实现贴吧的全自动签到。配合插件使用还可实现云灌水、点赞、封禁、删帖、审查等功能...
  20. Pycharm 搜索功能大全

热门文章

  1. 青莲云参与编写的《物联网安全设计指南》正式发布
  2. html 行高是什么单位,line-height什么意思?line-height带单位与不带单位的区别
  3. SAP MII(SAP制造集成和智能)-灵活且可扩展
  4. 消灭搜索框的多媒体搜索,路在何方?
  5. VM virtual Box虚拟机的安装
  6. Ubuntu18.04更换源地址
  7. 豹变猫?实时场景转变?NVIDIA多模式图像转换技术都能实现
  8. 男人化妆怎么了,百亿市场待开发
  9. java soot_Soot生成控制流图
  10. php设置backlog,关于PHP-FPM的backlog的默认值