欢迎光临散文网 会员登陆 & 注册

excel自动化案例分享——excel表格的拆分及样式设计

2023-06-30 16:40 作者:lliccl  | 我要投稿


一、前言

excel表格的拆分其实在网上可以找到很多相关内容,不过大多数就止步于拆分完成,未对excel表格的内容样式设计。在实际的工作中,更多的是需要对excel表格进行美化。显然单单靠pandas实现这些功能是比较困难的。今天我通过pandas和openpyxl第三方实现excel表格的拆分以及execl表格样式的输出。

二、数据来源

本文采用企业客户某些指标预测的信息的部分数据(已做脱敏处理),感兴趣的同学可私信获取。

三、数据解读及功能需求

1.整体数据了解

excel工作蒲共两个工作表,sheet1是以分公司的数据进行数据汇总预测的

注:因为本文章只是讲解python实现excel拆分和样式设计,所以不对表头含义进行讲解。

2.数据表功能及表格拆分方式

该份excel表格实现的就是将sheet2的明细数据分组聚合到sheet1之中。要实现的效果是每一个excel工作蒲只包含一个分公司的汇总以及该分公司每一个客户的数据信息,做到拆分的效果。例如示例数据,需要把它拆分成安徽办事处和成都分公司两份excel表格。

四、数据预处理

在实际工作中遇到的数据很多时候都是不完整的,数据格式有问题的。一份原始数据多半是有问题的,需要对数据进行预处理。本文的主题不在于此,就此略过。

五、基于pandas实现execl表格的拆分

1.导入第三方库

openpyxl是对excel处理的一个第三方库,基本可以通过它实现excel的所有功能。

2.数据导入

值得注意的是,通过load_workbook读取的是整个工作蒲的内容,我们无法直接获取数据。

不过得到工作表之后,仍无法直接获取到工作表sheet2的数据,需要使用.values方法获取数据内容,然后转化为DataFrame,如下图:


数据部分和理想的(红色框部分)还差了一些,这是由于原本的excel工作表内容造成的上图效果

3.DataFrame处理

DataFrame的索引是从0开始的,openpyxl读取的数据的索引是从1开始的,这里需要区分开。上述注释的对data取数的索引值和实际行数是相差1的。完成上述的代码,可以得到如下的DataFrame:

4.execl表格的拆分

前面提到表格的拆分依据是“分公司”,那么可以对分公司这一指标进行去重得到唯一的分公司不会有重复值。这样做的目的是有多少分公司,我就可以拆分出多少份excel表格。

由于sheet1和sheet2工作表的表头不一致,所以在把sheet2的数据汇总到sheet1需要对表头进行设置。

sheet1中是有不少的汇总项和比值项的数据,所以需要对sheet2中明细数据进行简单的计算,然后才一次写入sheet1。

最后保存即可,而现在拆分后的excel表格是没有样式的,不美观的。

对应到pandas的流程如下代码所示:

六、基于openpyxl实现excel表格样式处理

首先,对比一下excel表样式设置前后的区别

pandas直接导出的sheet1
通过openpyxl样式设置后的sheet1

那来看看应该如何实现呢?

首先引入openpyxl:

之后进行格式设置,下图便是每一段代码对应sheet1设置的样式的位置(这部分是在不好讲解,只能图示了,哈哈)。下图的sheet1是已经完成全部样式的状态,而非每一段代码执行后,sheet1真实的状态。

插入的一行单元格以及整体单元格的设置
单元格格式及字体设置
背景色及百分号设置

这样就完成了sheet1的样式设置,sheet2也是同理。

总的来说,这样是对openpyxl库有关样式设置的方法的掌握。那就可以遍历每一个单元格进行样式的设置了。

七、总结

利用openpyxl设计excel单元格样式,只要掌握openpyxl的各种函数,便可以做到excel的功能了。对于复杂且固定的excel表格,编写自动化程序是不错的选择,实属一劳永逸了。

附录:


excel自动化案例分享——excel表格的拆分及样式设计的评论 (共 条)

分享到微博请遵守国家法律