Python办公自动化对教务办公效率提升的研究
2022-08-12曹梦川
曹梦川
(宁夏职业技术学院,宁夏 银川 750021)
0 引 言
随着信息技术的快速发展,越来越多的地方政府、企业、学校开展实用了无纸化办公,相比以往的办公模式,OA系统已经成为各大公司的标配,具有强大的便捷性,但是在某一些情景下,例如疫情数据上报、员工信息填报、员工信息汇总等相关工作还是需要大量的人工进行处理、统计、分析。在面对数据量很小的任务时,这类的办公形式无法体现弊端,但是当数据量庞大到一定级别的时候,人工处理这些高重复性的任务不仅耗时耗力,还可能会出现错误或数据遗漏,对办公效率影响严重。在这个信息化时代,如何快速处理源源不断的数据已经是现代办公的主要问题。在各大学校中此类问题最为突出,尤其是在学校的教务部门中,教务人员每天需要处理大量的学生数据,例如宁夏职业技术学院软件学院全年级的学生已经超过1 200人,学校要求学院每天上报学生情况数据,负责教务的老师一天要处理这些碎片化的数据,效率和准确性来说都很难保证。如何通过办公自动化来解决大量重复、琐碎的工作任务,减少信息遗漏,提高工作效率,简化教务人员的工作内容,是本次的研究的重点。
1 自动化办公技术
随着人工智能、大数据等新兴科技的快速发展,Python语言也变得主流起来,凭借着Python强大的拓展性和丰富的第三方模块,不仅受到程序员的热爱,在办公自动化领域大显身手。
办公自动化(Office Automation, OA)是将计算机技术与现代化办公结合应用的一种新型的办公方式。目前而言,办公自动化没有统一的定义,凡是在传统的办公中使用各种新技术或设备,都属于办公自动化的领域。通过实现办公自动化,可以减少办公人员重复性工作,有效提升办公效率。
根据针对多个宁夏当地企业、事业单位调研,大部分OA系统的主要功能是所有业务网上操作,流程无纸化,审批线上化等信息化手段。对于一些日常工作,并没有给出有效的解决高重复性工作的方案。有些虽然提供了解决方案,但是没有考虑到教务人员的真实需求,开发出来的需求没有实用价值,很多工作不得不手工去做。因此加强对自动化替代人工办公的研究,将重复性高的工作交给机器,优化人员工作,对全面提升各行各业办公效率有着至关重要的作用。
通过对宁夏职业技术学院软件学院教务部门的工作内容分析,表格汇总、表格信息处理、表格填报为主要的工作内容。其中部分工作是具有很大的重复性,这样高重复性的工作,非常适合通过办公自动化来解决问题。针对教务人员不同的工作内容,设计应对的方案,从而实现质量与效率的提高,同时还可以将信息在各个部门之间进行交流与共享,避免重复索要数据的麻烦。所以办公自动化对教务办公的效率提升有着非常重要的作用及帮助。
1.1 技术及样本的选择
开发语言选取Python语言,主要原因是Python语言作为人工智能、大数据分析的重要支持语言,具有很强大、免费的“代码库”,用户可以调用集成完整的库实现自己想要的功能;Python作为脚本语言,和其他语言相比更加简洁、高效;Python被称为“胶水语言”,能够很好的包装和调用其他语言编写的库文件。
Pandas 是Python中一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算),提供高性能、易于使用的数据结构和数据分析工具。名字衍生自术语”panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
MySQL是一个关系型数据库管理系统,是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。
本次研究以宁夏职业技术学院软件学院教务部门为研究样本,软件学院2019级共有5个专业,合计13个班级,共536学生。主要数据来源是以班级为单位提交的各类表格,如个人信息登记表、疫情登记表等;学生相关各类表格,如活动报名表、信息表等。
1.2 办公自动化的实现
1.2.1 表格汇总的实现
根据软件学院实际情况分析,教务人员每天需要对13个班级表格进行汇总,平均耗时在10到20分钟之间,如果涉及到全部年级班级,处理时间约90分钟左右,人工方式已无法更加快捷的解决此类问题。通过使用Python进行办公自动化,使用脚本实现表格的汇总,不论多少张表格,都可在1秒内完成汇总,并且信息来源于原始表格,不会出现遗漏或填报串行等情况,汇总后生成新的表格,原始数据表格仅仅作为数据读取使用,不会对源数据造成不可逆的损坏。
图1为具体实现思路:
图1 表格汇总流程
(1)指定需要合并所有表格所在的文件夹绝对路径,通过Python中OS库中的walk方法遍历文件夹里所有文件的名称,与文件所在的绝对路径拼接成完整路径,存放在列表中,用于循环操作文件夹中所有的excel文件。
(2)使用循环调用pandas库中的read_excel方法分别读取文件夹中所有的文件,生成对应的dataframe对象。
(3)创建一个新的dataframe对象,用于存储所有所有excel数据,并设置columns参数为对应表头信息。将读取的数据通过循环依次写入这个新的dataframe对象中。
(4)通过pandas库中to_excel方法将数据写入新的excel中,完成合并操作。
具体实现代码:
获取文件夹中文件所在的全部路径
根据样本数据测试100次显示,合并文件所用平均时间约为1.3秒
1.2.2 构建学生信息库
根据调研显示,因不同的机构或单位定期要求学校提交学生信息,大部分学生信息例如姓名、班级、学号、电话、家庭住址等经常重复填写,教务人员不得不等各班学生填报完毕后提交上来,然后在进行汇总,因涉及班级众多,往往在提交的过程阶段花费时间最长。
很多学校为了解决此类问题建设了学生信息库,但是因为使用的技术为前后端技术,学生填写数据需要通过网页。当有新的字段需要填报,后台管理员必须重新设置或修改页面信息,学生按照要求重新填报;有的服务端没有实现低代码化,还需要对页面进行二次开发以应对新的字段填写,可以说将简单的问题复杂化,耗时耗力耗钱,无法有效的解决问题。
然而在通过表格的自动化汇总的实现后,本质来说,这个合成后的表格就是一个完整的数据集,可以使用该数据集在MySql中构建一个学生信息库,那么就将对数据库的维护转变成了对excel的维护,如果填报的表没有新的字段出现,可以直接使用Pandas中的to_sql方法,将现有的数据信息全部写入至对应的数据库表中。从而快速完成学生信息库的建设。
但是在面临新的字段信息的时候,会存在一个运行时间的问题,如果采用常规循环嵌套的方法,一条一条数据进行比对,每个字段也需要去比对,那么所花费的时间复杂度O(),完成的时间远超人工手动完成的时间,这样做反而适得其反。
解决思路:
(1)在学生填表阶段,不需要设置特别多字段的表格,只需要学生填写学号和新字段信息。
(2)对上交的表格进行合并,存放在dataframe对象中,不进行生成新表格和数据库写入的操作。
(3)在数据库中对应表中创建新字段,根据dataframe对象中学生学号作为查找的关键key,使用MySql中update方法通过学生学号作为主键索引更新数据。
MySql数据库根据主键索引所采用的是聚集索引,聚集索引的叶子节点就是数据节点,从上至下遍历一次B+树,直到找到具体的主键,拿到叶子结点存储的数据。时间复杂度为O(),符合自动化办公中快速的这一特点的要求。
根据样本数据经过100次测试显示,对学生信息库进行数据更新的平均用平均时在1.2秒主键索引模式如图2所示。
图2 主键索引模式
具体实现代码:
1.2.3 表格自动填报
在建立好学生信息库后,即可用信息库中的数据完成学生报表的自动填报功能。根据不同的报表要求,从信息库中选取相关字段,自动写入excel中。遇到根据班级分别上报的情况,可通过将班级作为班级作为一个sheet,分别将各个班级写入对应sheet。
具体实现思路:
(1)使用Pandas中read_sql()方法直接读取对应数据信息,得到一个dataframe对象。
(2)使用Pandas中loc进行切片,获取所需要的字段,并生成新的dataframe对象。
(3)使用groupby()方法对切片后的数据按照班级进行分组。
(4)通过to_excel方法将同一组别的数据写入到一张sheet中,循环至所有组别写入完毕。
根据样本数据测试100次显示,19级全体学生填写疫情登记表所用平均时间为4秒。
代码实现:
2 结 论
通过多次实验,自动化办公为教务人员提升的办公效率的成效是非常明显的:(1)汇总表格平均用时在1.3秒。(2)数据信息库的更新平均用时在1.2秒。(3)自动填报报表从已有的信息库中所用时4秒。(4)该研究结果解决了大部分需要重复去做的工作,实现了办公自动化。
优化教务办公,用机器替代人工是实现高效办公的必要途径,但是在自动化具体实现方面必须立足于实际需求,依据真实需求设计相应功能,才能真正实现办公自动化。