• 用 Python 自动生成数据日报!


    日报,是大部分打工人绕不过的难题。

    对于管理者来说,日报是事前管理的最好抓手,可以了解团队的氛围和状态。可对于员工来说,那就有的聊了。对于重复性的工作,我非常推荐大家使用Python将其变成模块化、自动化,帮助我们实现高效办公。

    下面我们通过一个补写销售日报的案例,展示一下Python自动化办公的优势。本文简化了案例的流程,在文末附有完整代码。

    需求详解

    朋友的需求是这样的,他们平时的销售数据是记录在Excel上,汇总后会按照部门进行统计。但是今年年初时,领导突然要求写日报,大家写了一个月发现并不检查就没继续写下去。

    ▲Excel日报数据

    现在突然被要求明天交本月之前的所有日报,这相当于要补2-5月将近120天的日报,如果靠双手复制粘贴,那估计要吐血了。朋友将其写日报的相关文件都发了过来,发现最终日报效果如下所示。

    所以需求也就是比较简单了,只需要从Excel表格中读取每日的数据,使用Python将其处理后,再依次写入Word文档中,即可实现批量生成日报。

    正好最近有本新书《快学Python:自动化办公轻松实战》,既是一本Python入门书,又包含了大量Python自动化办公的实战项目。我们只需学习其中的第3章、第5章,即可轻松实现今天的这个需求。

    数据处理

    在进行数据处理之前,要先了解最终需要哪些数据。如下图所示,在目标日报Word中主要分为两类:红色标记的数值主要是由当日的数据、或者由它们计算后得到的数据构成;绿色标记的表格则更简单了,就是近七日的数据(销售数量、销售金额、销售目标、完成度)。

    首先我们导入Pandas模块进行数据处理,在新书《快学Python:自动化办公轻松实战》的第3章中,正是【学习Python,可以自动化处理数据】。

    1. import pandas as pd
    2. df = pd.read_excel("日报数据.xlsx")
    3. df

    输出结果

    导入数据后,接着就可以按照我们的需求,来进行数据运算了。数据运算主要分为两种,一种是利用加 +、减 -、乘 *、除 / 进行数据运算,另一种是利用统计方法进行数据运算。

    在交互式环境中输入如下命令:

    1. df["日期"] = df["日期"].apply(lambda x:x.strftime("%Y-%m-%d"))
    2. df["当日完成度"] = (df["销售金额"]/df["销售目标"]*100).round(1)
    3. df["累计销售金额"] = df["销售金额"].cumsum()
    4. df["当年完成度"] = (df["累计销售金额"]/2200000*100).round(1)
    5. df["累计销售金额"] = (df["累计销售金额"]/10000).round(2)
    6. df

    输出结果:

    可以看到,最终结果截图中红色标记的数据内容已经全部被计算出来。而绿色标记的表格则更加简单了,使用Pandas模块中的数据选取即可,详见新书《快学Python:自动化办公轻松实战》章节3.2.3。

    在交互式环境中输入如下命令:

    1. num = 10
    2. df.iloc[num-7:num:5]

    输出结果:

    通过这种方法就可以轻松得到某一日期的过去7日内的日报数据合集。

    自动生成日报

    如果想自动生成Word日报,就需要学习新书《快学Python:自动化办公轻松实战》中第5章的内容,即【学习Python,可以自动化操作Word】。

    使用Python自动化操作Word通常会使用python-docx模块,而批量生成Word文档一般有两种方法:使用add_ paragraph()add_table()等方法给Word文档添加各种内容。另一种就是我们这次要用的,即按照位置替换原Word文档中的文字和表格数据等。

    在交互式环境中输入如下命令:

    1. for index, rows in df.iterrows():
    2.     if index > 30:
    3.         doc.paragraphs[0].runs[1].text = rows[0]
    4.         doc.paragraphs[4].runs[4].text = rows[0]
    5.         doc.paragraphs[4].runs[6].text = str(rows[1])
    6.         doc.paragraphs[4].runs[8].text = str(rows[2])
    7.         doc.paragraphs[5].runs[1].text = str(rows[3])
    8.         doc.paragraphs[5].runs[3].text = str(rows[4])
    9.         doc.paragraphs[9].runs[2].text = str(rows[5])
    10.         doc.paragraphs[9].runs[7].text = str(rows[6])
    11.         table = doc.tables[0]
    12.         data_table = df.iloc[index-6:index+1,:5]    
    13.         for i in range(7):
    14.             for j in range(5):
    15.                 table.cell(i+1,j).text = str(df.iloc[i,j])
    16.         doc.save(f"销售日报-{rows[0]}.docx")

    执行代码,输出结果:

    如上图所示,120份有记录的销售日报就写好啦,Python自动化办公就是怎么神奇。

    完整代码获取方式:

    链接:https://pan.baidu.com/s/1KBxku9oq9wST5QJKRw8lwQ

    提取码:jtqg

    因为语法简单、容易上手,Python 被称为“最适合初学者学习”的编程语言。而对于工作中各种重复性的电脑工作,都可以考虑用Python来转变为自动化程序。

    如果你是一个Python初学者,会发现本文的逻辑非常简单,甚至大家还可以对此进行改进。比如python-docx模块在读取Word文档有优势,但是向模板中写入文本时,可以考虑使用docxtpl模块(学一点Jinja2语法)。

    如果你是一个0基础的编程初学者,那也不用怕!

    因为正好最近《快学Python:自动化办公轻松实战》上市了,人生苦短,快学Python!这是一本适合初学者的Python入门书,也是进阶学习Python自动化操作Word 、Excel 、PPT、PDF、沟通工具、图片和文件的宝典,更是一本拥有30+实战案例、10+工作项目的参考大全!

    今天分享文章的Python自动化办公案例,其中知识点就是来自《快学Python:自动化办公轻松实战》书籍。

    如果大家感兴趣,可以点击下方链接查看书籍介绍和目录,绝对是最适合大家的Python入门书,也是大家学习Python自动化办公的进阶书,更是随时可以翻看参考的案例宝典!

    赠书规则:为本文「点赞在看」+ 「转发朋友圈」 +「留言」且与文章内容相关的优质留言即可上墙并从所有留言中随机选出 3 位走心留言的读者将各获得一本。

    截止时间:2022年7月17日,晚 20:00

    领书须知:提供点赞在看和转发朋友圈截图

    注意事项:最终获赠者请在24小时以内添加我的微信,备注:赠书👇

  • 相关阅读:
    Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转
    Elasticsearch:使用反向地理编码在地图上显示自定义区域统计数据
    Python实现fan茄小说内容下载
    Java基础(第五期): 一维数组 && 二维数组 && 数组 && 引用数据类型在内存中的存储图解
    【腾讯云原生降本增效大讲堂】云原生混部技术标准解读
    自己实现str
    手托html页面和在浏览器中输入地址访问的背后不同原因、默认访问的工程和默认访问的资源
    爱思唯尔——利用AI来改善医疗决策和科研
    syncthing 多设备同步
    RT-Thread 中断管理(学习一)
  • 原文地址:https://blog.csdn.net/biyusr/article/details/125779149