不是程序员学python干嘛_学 Python 都用来干嘛的?

财务同学看看,如何用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 这个模块。

看完了,是不是没看懂,那就证明你该学习了,赶紧来学习新手入门课,边学习边入门:

看完记得点赞,再次先谢过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值