Pixabay License
我们为什么学习 Python,因为 Python 可以帮助我们实现自动化办公,快速地进行数据处理,数据处理典型的应用场景就是用 Python 对 Excel 数据处理。再前面我也写过一篇 Python 中对 Excel 数据的简单处理使用 Python 优雅地操作 Excel 数据。
今天要讲的是 Python 更进一步地对 Excel 数据的处理,假设在已知一个磁盘中的某个文件夹下有四年级三班的语文、数学、科学三份成绩表,由于三份成绩表分开统计后,不利于统计每位同学的总成绩和学生的学习情况分析,现在要将三份成绩表合并成一份,现已给出合并后的表头如下
语文成绩表、数学成绩表、科学成绩表表头如下
01理清思路
在解决问题之前,首先来理理思路,从语文、数学、科学成绩表的表头可以看出,考号、姓名对应合并后的表头,这两项合并后不会发生变化。在合并后的表头上分别列出了语文、数学、科学、总分四项,这里需要分别取出语文、数学、科学成绩表中的分数再一一对应的写入,并计算出每位同学的总成绩。这样,我们就可以把三科成绩合并到一张 Excel 表格中了。
Python 读取文件夹下多 Excel 数据
02开始 Coding
按照以上的理出来的思路开始写出逻辑代码。如果你是 Python 新手,对 Python 读取写入文件不是很熟悉,强烈建议你可以阅读下我之前写的那篇 Python 之 Excel 基础篇,或许对你认识 Python 对 Excel 数据处理有所了解。
初始化合并后的 Excel 表格信息,创建一个全局 workbook、worksheet,用于后面写入 Excel 数据,self.worksheet.write_row('A1', headings) 写入一行表头。
读取文件夹下所有 Excel 文件,通过 os.listdir(path) 获取文件夹下所有文件信息,再利用 for 循环读取每个 Excel 数据。
取 Excel 数据并解析数据,获取学生信息和获取各科分数。
将获取到的学生信息写入 Excel 中。学生信息,从 A2 开始写入,因为 A1 写入了表头。write_row(row,data),row 表示写入的行,data 是一个数组。
将获取到的学生成绩写入 Excel 中。subject 表示写入的哪一列,在合并后的 Excel 表中,将语文、数学、科学三门成绩分别排列出来,写入成绩时就需要确定写入到哪一列。datas 是一组成绩数据,循环一次写入 Excel 表中。
最后,计算每个学生的总成绩。这里通过 Excel SUM 函数求和,在 F 列循环一次写入 SUM ,计算从语文 C 列到科学 E 列的总成绩。
根据思路写完代码后,运行看看是否能够完成 Excel 表格的合并。运行完成后,在文件夹中创建了一个四年级三班期中成绩统计的 Excel 文件。从文件大小上看,数据应该是写入成功了。
最终确认,写入成功,完美地将三张表格合并完成。
Pixabay License
03总结
感叹 Python 语言的强大,在工作中能给我们带来非常多的便利,工作中对 Excel 数据的处理是非常常见的工作,有时手动操作 Excel 可能会花很多时间,效果还不一定让领导满意。学会了 Python 不仅能节约大把时间,还能做出漂亮的 Excel。
有人可能会说,有写代码的时间,我已经把 Excel 表格整理好了。简单的 Excel 数据处理会很快处理,当 Excel 数据很复杂,数据量比较大、并且这种 Excel 数据处理在工作中每天或每月都需要处理,你还会认为手动处理 Excel 数据占优势吗?
当你写好代码后,下次再使用直接运行就完成了 Excel 数据处理,花一次时间,节省多次时间。时间是金钱,这句俗语在这里就得到了完美体现。