1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用Python自動(dòng)生成數(shù)據(jù)日?qǐng)?bào)!

        共 3302字,需瀏覽 7分鐘

         ·

        2022-08-29 10:49

        ↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能

        后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包

        日?qǐng)?bào),是大部分打工人繞不過的難題。

        下面我們通過一個(gè)補(bǔ)寫銷售日?qǐng)?bào)的案例,展示一下Python自動(dòng)化辦公的優(yōu)勢(shì)。本文簡(jiǎn)化了案例的流程,在文末附有完整代碼。

        需求詳解

        朋友的需求是這樣的,他們平時(shí)的銷售數(shù)據(jù)是記錄在Excel上,匯總后會(huì)按照部門進(jìn)行統(tǒng)計(jì)。但是今年年初時(shí),領(lǐng)導(dǎo)突然要求寫日?qǐng)?bào),大家寫了一個(gè)月發(fā)現(xiàn)并不檢查就沒繼續(xù)寫下去。

        ▲Excel日?qǐng)?bào)數(shù)據(jù)

        現(xiàn)在突然被要求明天交本月之前的所有日?qǐng)?bào),這相當(dāng)于要補(bǔ)2-5月將近120天的日?qǐng)?bào),如果靠雙手復(fù)制粘貼,那估計(jì)要吐血了。朋友將其寫日?qǐng)?bào)的相關(guān)文件都發(fā)了過來,發(fā)現(xiàn)最終日?qǐng)?bào)效果如下所示。

        所以需求也就是比較簡(jiǎn)單了,只需要從Excel表格中讀取每日的數(shù)據(jù),使用Python將其處理后,再依次寫入Word文檔中,即可實(shí)現(xiàn)批量生成日?qǐng)?bào)。

        數(shù)據(jù)處理

        在進(jìn)行數(shù)據(jù)處理之前,要先了解最終需要哪些數(shù)據(jù)。如下圖所示,在目標(biāo)日?qǐng)?bào)Word中主要分為兩類:紅色標(biāo)記的數(shù)值主要是由當(dāng)日的數(shù)據(jù)、或者由它們計(jì)算后得到的數(shù)據(jù)構(gòu)成;綠色標(biāo)記的表格則更簡(jiǎn)單了,就是近七日的數(shù)據(jù)(銷售數(shù)量、銷售金額、銷售目標(biāo)、完成度)。

        首先我們導(dǎo)入Pandas模塊進(jìn)行數(shù)據(jù)處理

        import pandas as pd
        df = pd.read_excel("日?qǐng)?bào)數(shù)據(jù).xlsx")
        df

        輸出結(jié)果

        導(dǎo)入數(shù)據(jù)后,接著就可以按照我們的需求,來進(jìn)行數(shù)據(jù)運(yùn)算了。數(shù)據(jù)運(yùn)算主要分為兩種,一種是利用加 +、減 -、乘 *、除 / 進(jìn)行數(shù)據(jù)運(yùn)算,另一種是利用統(tǒng)計(jì)方法進(jìn)行數(shù)據(jù)運(yùn)算。

        在交互式環(huán)境中輸入如下命令:

        df["日期"] = df["日期"].apply(lambda x:x.strftime("%Y-%m-%d"))
        df["當(dāng)日完成度"] = (df["銷售金額"]/df["銷售目標(biāo)"]*100).round(1)
        df["累計(jì)銷售金額"] = df["銷售金額"].cumsum()
        df["當(dāng)年完成度"] = (df["累計(jì)銷售金額"]/2200000*100).round(1)
        df["累計(jì)銷售金額"] = (df["累計(jì)銷售金額"]/10000).round(2)
        df

        輸出結(jié)果:

        可以看到,最終結(jié)果截圖中紅色標(biāo)記的數(shù)據(jù)內(nèi)容已經(jīng)全部被計(jì)算出來。而綠色標(biāo)記的表格則更加簡(jiǎn)單了,使用Pandas模塊中的數(shù)據(jù)選取即可

        在交互式環(huán)境中輸入如下命令:

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

        輸出結(jié)果:

        通過這種方法就可以輕松得到某一日期的過去7日內(nèi)的日?qǐng)?bào)數(shù)據(jù)合集。

        自動(dòng)生成日?qǐng)?bào)

        使用Python自動(dòng)化操作Word通常會(huì)使用python-docx模塊,而批量生成Word文檔一般有兩種方法:使用add_ paragraph()、add_table()等方法給Word文檔添加各種內(nèi)容。另一種就是我們這次要用的,即按照位置替換原Word文檔中的文字和表格數(shù)據(jù)等。

        在交互式環(huán)境中輸入如下命令:

        for index, rows in df.iterrows():
            if index > 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]    
                for i in range(7):
                    for j in range(5):
                        table.cell(i+1,j).text = str(df.iloc[i,j])
                
                doc.save(f"銷售日?qǐng)?bào)-{rows[0]}.docx")

        執(zhí)行代碼,輸出結(jié)果:

        如上圖所示,120份有記錄的銷售日?qǐng)?bào)就寫好啦,Python自動(dòng)化辦公就是怎么神奇。

        完整代碼獲取方式:

        鏈接:https://pan.baidu.com/s/1TPn53r4wd_k_VgqOewlO_A?pwd=kxpy

        提取碼:kxpy

        因?yàn)檎Z法簡(jiǎn)單、容易上手,Python 被稱為“最適合初學(xué)者學(xué)習(xí)”的編程語言。而對(duì)于工作中各種重復(fù)性的電腦工作,都可以考慮用Python來轉(zhuǎn)變?yōu)樽詣?dòng)化程序。

        如果你是一個(gè)Python初學(xué)者,會(huì)發(fā)現(xiàn)本文的邏輯非常簡(jiǎn)單,甚至大家還可以對(duì)此進(jìn)行改進(jìn)。比如python-docx模塊在讀取Word文檔有優(yōu)勢(shì),但是向模板中寫入文本時(shí),可以考慮使用docxtpl模塊(學(xué)一點(diǎn)Jinja2語法)。


        1. 細(xì)思恐極,插上 U 盤就開始執(zhí)行 Python 代碼

        2. 不要再寫Python for循環(huán)了

        3. 推薦 GitHub 上的一套公開 API 接口,簡(jiǎn)直不要太全!



        瀏覽 38
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧洲mv亚洲mv韩国mv精品 | 开心激情黄色网 | 中国1级美女黄色片操逼 | 人妻丰满双乳BD韩国三级 | 国产精品一区二区在线 | 免费一级一级人妻片 | 无码成人精品区在线观看 | 超碰精品在线 | 91香蕉在线观看视频在线播放 | 日本啪视频|