以我所在的银行为例,市分行人力资源部每月都会给各个支行下发待分配绩效表,一个支行一张excel,要求支行分配到个人。我想,人力资源部很可能是基于一张汇总表,然后将里面的数据按支行拆分出来,复制粘贴到新的excel,并以支行命名,然后邮件发送支行。且说将绩效汇总表里的数据拆分出来,需要做「新建excel-复制粘贴数据-以支行名另存」这样的操作。如果可以通过一段代码代替如上重复性操作...于是,基于目前所学,尝试了一下,果然可以。
一、需求
将「支行绩效」文件夹下的唯一一张excel,也就是「汇总表」,按照支行进行拆分,拆分后,该文件夹下会同时呈现出11张各个支行的数据表,且数据表以支行名称命名。
二、思路
拆分excel应该有很多种代码实现路径。我基于目前自己在学的openpyxl库来写写我的方法。
整体思路是:
新建excel-写入数据-保存excel。
新建excel。这里我们要通过openpyxl库下的Workbook模块新建空白excel。
写入数据。也就是在工作表的末尾添加一行数据,使用的是worksheet.append()方法。对于每一个支行,我们首先都要将汇总表的表头,也就是第一行写入其中。在有了表头的前提下,我们接着往下看,对于第一个支行,我们要写入汇总表的第二行;对于第二个支行,我们要写入汇总表的第三行...很有规律,我们可以通过「while循环+计数器」来实现。此外有个注意事项,在使用worksheet.append()时,append里添加的是一个可迭代的对象,通常是一个包含单元格值的列表、元组或其他可迭代类型。工作表对象[行名]虽然代表某一行,而且也是元组类型,但元组的元素是cell对象(单元格对象),而不是单元格的值。如果我们直接把工作表对象[行名]放入append(),会出现“Cells cannot be copied from other worksheets”报错。因此需要获取单元格的值,再将一组由单元格的值组成的可迭代对象放入append()里。
保存excel。对于新创建的支行的excel,我们统一以其工作表的['A2']单元格,作为名称命名并保存。