daily是大多数农民工无法回避的问题。对于管理者来说,日报是最好的提前管理方式,可以了解团队的氛围和状态。但对于员工来说,还是有话要说的。对于重复性的工作,我强烈推荐大家使用Python,将其模块化、自动化,帮助我们实现高效办公。下面通过一个日常补销的案例来展示一下Python自动化办公的优势。本文简化了案例的流程,文末附上完整代码。需求详解小伙伴们的需求如下。他们平时的销售数据都是用Excel记录的,汇总之后再按部门统计。但今年年初,领导突然要求写一份日报。大家写了一个月,发现没有检查,就没有继续写了。▲excel日数据现在突然要求明天提交这个月之前的所有日报表。这相当于补了2月到5月近120天的日报表。朋友把自己日报的相关文件都发过去了,发现最终的日报效果如下。所以要求比较简单。只需要从Excel表格中读取每日数据,用Python处理,然后写入Word文档,即可实现批量生成日报。数据处理在进行数据处理之前,需要知道最终需要什么样的数据。如下图,目标日词中主要有两大类:红色标记的值主要由当天的数据或他们计算后得到的数据组成;绿色标注的表格比较简单,就是过去7天的数据(销售数量、销售金额、销售目标、完成度)。importpandasaspddf=pd.read_excel("Dailydata.xlsx")将df输出结果导入数据后,我们就可以根据需要进行数据计算了。数据运算主要分为两种,一种是使用加+、减-、乘*、除/进行数据运算,另一种是使用统计方法进行数据运算。在交互环境中输入以下命令:df["date"]=df["date"].apply(lambdax:x.strftime("%Y-%m-%d"))df["Completiondegreeof当天"]=(df["销售额"]/df["销售额目标"]*100).round(1)df["累计销售额"]=df["销售额"].cumsum()df["当年完成"]=(df["累计销售额"]/2200000*100).round(1)df["累计销售额"]=(df["累计销售额"]/10000)。round(2)df输出结果:可以看到最终结果截图中红色标注的数据内容已经计算完毕。绿色标注的表格比较简单,直接使用Pandas模块中的数据选择即可,详见新书《快学Python:自动化办公轻松实战》的3.2.3章节。在交互环境中输入以下命令:num=10df.iloc[num-7:num,:5]输出结果:该方法可以很容易的得到过去7天内某个日期的每日数据采集。自动生成日报使用Python实现自动化Word通常使用python-docx模块,批量生成Word文档一般有两种方法:使用add_paragraph()、add_table()等方法向Word文档添加各种内容。另一个就是我们这次要用到的,就是根据位置替换原来Word文档中的文本和表格数据。在交互式环境中输入以下命令:forindex,rowsindf.iterrows():ifindex>30:doc.paragraphs[0].runs[1].text=rows[0]doc.paragraphs[4]。runs[4].text=rows[0]doc.paragraphs[4].runs[6].text=str(rows[1])doc.paragraphs[4].runs[8].text=str(rows[2])doc.paragraphs[5].runs[1].text=str(rows[3])doc.paragraphs[5].runs[3].text=str(rows[4])doc.paragraphs[9.runs[2].text=str(rows[5])doc.paragraphs[9].runs[7].text=str(rows[6])table=doc.tables[0]data_table=df.iloc[index-6:index+1,:5]foriinrange(7):forjinrange(5):table.cell(i+1,j).text=str(df.iloc[i,j])doc.save(f"SalesDaily-{rows[0]}.docx")执行代码,输出结果:如上图所示,已经写了120份有记录的销售报表。Python自动化办公有多神奇。Python因其语法简单易用,被誉为“最适合初学者学习”的编程语言。对于工作中各种重复性的计算机工作,可以考虑使用Python将其转化为自动化程序。如果你是Python初学者,你会发现这篇文章的逻辑非常简单,你甚至可以改进它。比如python-docx模块在读取Word文档时有优势,但是在向模板写入文本时,可以考虑使用docxtpl模块(学一点Jinja2语法)。以上就是本次分享的全部内容。如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。
