财务同学看看,如何用python自动生成出货清单?实战分享
出货总表包含数百条出货记录。假设一年有 几百条天都需要处理发货,那按照常规的方法,需要从总表中找到每天的发货记录,然后复制到每天的出货单里面,重复几百次
总表和模板分别长这样的:
我们先从总表中提取信息,放到一个字典里面,方便写入Excel工作表时调用。导入 openpyxl 模块,用于打开并读取总表里面的信息。使用 load_workbook 打开总表,存入变量 wb,然后选择工作表 Sheet,存入变量 ws ~这些是Python中常见的对文件操作的命令,建立空字典data,用于存储数据。一开始,我们需要构思好数据结构 。
由于我们需要将每天的所有出货项目填入一页表,所以要用日期作为字典的键。字典的值就是产品的4个信息,即客户、型号、零件号和数量。有时候,一天只有一条出货信息,但有时有两个即以上,所以我们需要使用嵌套列表来作为字典的值。然后我们使用for循环遍历总表,从第二行开始直到最后一行,因为 range(a,b) 是取不到 b 的,所以需要ws.max_row+1。每读取一行,我们就将客户信息,型号,零件号和数量存入 info_list 里面。 data.setdefault(date,[])
是用于将日期作为键,且在遍历到具有相同日期的产品信息的时候,不覆盖原来的键(日期),而是将其值添加到后面的空列表内,即嵌套列表。
我们可以看到这正是我们要的结果,键就是日期,值就是当天出货的所有的产品信息的嵌套列表 ,数据搜集完成后,我们可以打印其键值对,以便观察是否是我们想要的。这是一个简单的 for循环知识点,经过这样一个操作之后,我们可以得到这样一个结果。
经过简单的20几行代码,我们就得出来总表中的数据导出到了Python程序中,数据获取完成后,就可以开始创建并写入每日出货清单了。
我们事先设置好了一个产品信息为空的Excel模板,随后让程序将每天的出货信息填入即可,先打开模板“出货单模板.xlsx”,然后获取其工作表“temp”,以便后续复制并写入数据。
我们建立一个for循环,遍历字典data里面的所有的键(即日期)。使用 copy_worksheet 复制模板工作表,存入 ws_new ,并将其标题重命名为日期 ws_new.title 。E3单元格是填入固定的值,即日期,所以直接赋值为date。
因为每天可能有20个及以上的出货信息,那就需要在出货清单中填写几行信息,所以需要设置一个行计数器 i,其初始值为5,因为出货清单是从第5行开始的。每填完一行信息,计数器就加1 i+=1,然后就可以填写下一行了。所有信息填写完后,就保存数据 wb_day.save("data\出货单.xlsx"),任务完成。几百个工作表瞬间填完,结果如下图:
至此,我们利用Python自动生成Excel文档的任务就结束了,现在来看看这个一个不到30行的自动化程序,用到了哪些知识点:
1、模块的调用
from openpyxl import load_workbook
标准的模块调用语句,这些是 Python 操作 Excel 常用的模块,本次我们用到的是 openpyxl 这个模块。
看完了,是不是没看懂,那就证明你该学习了,赶紧来学习新手入门课,边学习边入门:
看完记得点赞,再次先谢过。