码农乌托邦

楠哥小站

楠哥,理想主义码农,现居纽约。


商科小白的Python课EP5:根据模板自动批量生成文档

每天十分钟,编程很轻松!大家好,我是码农楠哥。

今天是Python入门课的第五节,上面的视频源是B站,海外的朋友可以前往YouTube观看https://youtu.be/Lj_3EVmQa8g

上节课我们讲解了循环语句,今天,让我们来通过一个真实的案例来加深一下对循环语句的理解。

首先让我们看一下这个案例。很多做审计的同学经常需要向不同的公司和银行发送询证函。这类函件一般都有一个固定的模板,只需要根据不同的询证对象填入不同的公司名称,银行账号等信息。其实,在很多行业都存在类似的任务,比如说做行政工作的小伙伴或许经常需要向不同部门、不同的人员发送不同的通知;做人力资源工作的小伙伴需要根据不同职位、不同人员在预定的表格和邮件中填入不同的信息。以我们当前的询证函为例,我们想要向不同的银行发出不同的询证函。这个例子中,我们需要向五个银行发送询证函。所有银行的信息都记录在第一个和第二个表格当中。第一个表格中记录了每个银行的存款信息,第二个表格记录了每个银行的借款信息。我们希望生成5个新的表格,每个表格是一个可以直接打印的询证函,同时每份询证函中的公司名称、银行信息等内容都被进行了合理的替换。看到这里,不防稍微暂停一下视频,想想你要如何使用python程序完成这项工作呢?

让我们先来分解一下任务。

首先,我们的python程序需要能够对五个银行进行重复的操作,这就是一个非常典型的循环语句的使用场景。此处我们希望循环语句循环执行五次,每次都完成几乎相同的操作。

其次,在每次执行循环语句时,我们希望首先将询证函模板复制到一个新的表格当中,之后把相应的数据插入到对应的单元格当中。具体到我们的信息,对于COMPANY_NAME我们需要进行替换操作,对于日期我们希望替换为当前的日期,对于编号我们希望替换为当前的编号。对于银行账号,我们希望从deposit这个表格中获取存款账号,从due这个表格中获取借款的账号。当我对于五个银行都执行了上面描述的操作后,我们就生成了五份询证函。

下面让我们来看一下如何完成程序。

from openpyxl import load_workbook

wb = load_workbook("example1.xlsx")
template = wb["template"]
due = wb["due"]
deposit = wb["deposit"]

for i in range(6):
  target = wb.copy_worksheet(template)
  target["A3"] = deposit["B%s" % (i+1)].value
  target["J2"] = deposit["A%s" % (i+1)].value
  target["C18"] = deposit["C%s" % (i+1)].value
  target["C24"] = due["C%s" % (i+1)].value
  target.title = "letter%s" % (i+1)

wb.save("example1.xlsx")

当然,在实际当中创建询证函的流程要比我们的案例中更加复杂。比如,很可能同一家银行会有多个账号,我们需要在模板中填充的数据的格式、数值显示方式、精确度等要有不同的变化。再或者,有些时候生成Word文档、PDF文档甚至是Outlook邮件会更加简化工作流程。我们在后续的课程中会逐步的讲解到如何使用Python完成这些任务。

以上就是这节课的全部内容。每天十分钟,编程很轻松。谢谢大家收看,我们下期再见。

更早的文章

商科小白的Python课EP4:循环语句助你迅速提升编程效率

每天十分钟,编程很轻松!大家好,我是码农楠哥。 今天是Python入门课的第四节,上面的视频源是B站,海外的朋友可以前往YouTube观看https://youtu.be/IQJoDbjt1P8。…

Technical, Python101继续阅读
comments powered by Disqus