在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    告別加班!Python批量生成合同文檔,解決合同重復(fù)制作問(wèn)題

    告別加班!Python批量生成合同文檔,解決合同重復(fù)制作問(wèn)題

    假設(shè)某日我開(kāi)了一家空調(diào)公司,暫且就叫他天強(qiáng)空調(diào)安裝設(shè)備公司吧,假裝自己有公司,接了一單大生意,就是給甘肅省的各個(gè)高校安裝空調(diào)(其實(shí)這邊的氣候基本用不到空調(diào),就是假想一下),那么接下來(lái)就是面臨簽訂合同,甘肅省這么多高校就得簽訂幾百份合同,有什么快捷方式呢?

    毋庸置疑,我們優(yōu)先使用Python解決這一問(wèn)題,Python可是實(shí)現(xiàn)辦公自動(dòng)化的利器,本節(jié)使用Python批量生成合同,學(xué)會(huì)這個(gè)即可解決重復(fù)錄制合同的問(wèn)題,下面一起學(xué)習(xí)~

    示例工具:anconda3.7

    本文講解內(nèi)容:openpyxl、docxtpl庫(kù)的使用

    適用范圍:Python批量生成合同

    Python庫(kù)安裝

    首先安裝本節(jié)需要使用的兩個(gè)包,openpyxl和docxtpl庫(kù),在代碼行里面使用下方的命令即可安裝完成。

    !pip install openpyxl!pip install docxtpl

    當(dāng)出現(xiàn)Successfully installed的字樣時(shí),表明安裝成功。

    設(shè)置合同模板

    設(shè)置一個(gè)合同模板,在文檔插入數(shù)據(jù)的地方插入類似于{{ a }}的標(biāo)簽,傳入字典{{ “a”: 1234 }} 就能在標(biāo)簽上渲染出數(shù)據(jù)1234,其他下劃線的設(shè)置原理均類似。

    其實(shí)本文使用Python批量生成合同的做法與Word中的郵件合并批量生成合同的做法類似,代碼更加靈活和高效。

    導(dǎo)入合同數(shù)據(jù)

    導(dǎo)入提前錄制好的合同數(shù)據(jù),包括甲方、乙方、產(chǎn)品名稱等字段信息,并且將簽約日期轉(zhuǎn)換為字符型。

    import pandas as pdfrom openpyxl.utils.dataframe import dataframe_to_rowsdf = pd.read_excel(r’C:Users尚天強(qiáng)Desktop各高校空調(diào)合同.xlsx’)df[“簽約日期”] = df[“簽約日期”].apply(lambda x:x.strftime(“%Y-%m-%d”))datas = []df

    循環(huán)遍歷每一行數(shù)據(jù),并將其存入到一個(gè)字典中,使用append函數(shù)將這些字典合并,打印結(jié)果如下所示。

    for row in dataframe_to_rows(df,index=False,header=False): data = {“甲方”: row[0], “乙方”: row[1], “產(chǎn)品名稱”: row[2], “產(chǎn)品價(jià)格”: row[3], “保修期”: row[4], “簽約日期”: row[5]} datas.append(data)datas

    此外還可以使用openpyxl庫(kù)將合同數(shù)據(jù)導(dǎo)入字典,原理與上面代碼導(dǎo)入的方式一樣。

    from openpyxl import load_workbookwb = load_workbook(r’C:Users尚天強(qiáng)Desktop各高??照{(diào)合同.xlsx’)ws = wb[‘Sheet1’]datas = []for row in range(2, ws.max_row): A = ws[f”A{row}”].value B = ws[f”B{row}”].value C = ws[f”C{row}”].value D = ws[f”D{row}”].value E = ws[f”E{row}”].value F = ws[f”F{row}”].value F = F.strftime(“%Y-%m-%d”) data = {“甲方”: A, “乙方”: B, “產(chǎn)品名稱”: C, “產(chǎn)品價(jià)格”: D, “保修期”: E, “簽約日期”: F} datas.append(data)datas

    插入合同數(shù)據(jù)

    導(dǎo)入docxtpl庫(kù),提前導(dǎo)入之前創(chuàng)建的合同文檔模板,使用render函數(shù)渲染{}中的內(nèi)容,從而達(dá)到批量插入數(shù)據(jù)的目的。

    from docxtpl import DocxTemplatefor data in datas: tpl = DocxTemplate(r’C:Users尚天強(qiáng)Desktop各高校安裝空調(diào)合同書(shū).docx’) tpl.render(data) tpl.save(r’C:Users尚天強(qiáng)Desktop合同生成{}的空調(diào)安裝合同.docx’.format(data[‘甲方’])) print(‘{}的空調(diào)安裝合同……已生成’.format(data[‘甲方’]))

    代碼封裝

    將以上所有的代碼進(jìn)行封裝,一鍵運(yùn)行,即可得到如下生成的docx合同文檔。

    import pandas as pdfrom openpyxl.utils.dataframe import dataframe_to_rowsfrom docxtpl import DocxTemplatedf = pd.read_excel(r’C:Users尚天強(qiáng)Desktop各高校空調(diào)合同.xlsx’)df[“簽約日期”] = df[“簽約日期”].apply(lambda x:x.strftime(“%Y-%m-%d”))datas = []for row in dataframe_to_rows(df,index=False,header=False): data = {“甲方”: row[0], “乙方”: row[1], “產(chǎn)品名稱”: row[2], “產(chǎn)品價(jià)格”: row[3], “保修期”: row[4], “簽約日期”: row[5]} datas.append(data)for data in datas: tpl = DocxTemplate(r’C:Users尚天強(qiáng)Desktop各高校安裝空調(diào)合同書(shū).docx’) tpl.render(data) tpl.save(r’C:Users尚天強(qiáng)Desktop合同生成{}的空調(diào)安裝合同.docx’.format(data[‘甲方’])) print(‘{}的空調(diào)安裝安裝合同已生成’.format(data[‘甲方’]))

    打開(kāi)任意的一個(gè)合同書(shū),我們看到已經(jīng)在原有的下劃線處插入了合同數(shù)據(jù)。

    以上就是作者使用Python寫(xiě)了一個(gè)小腳本,輕松實(shí)現(xiàn)批量生成合同文檔,大家可以親自動(dòng)手實(shí)現(xiàn)一下,解決重復(fù)的手工勞動(dòng),刻不容緩,學(xué)習(xí)Python辦公自動(dòng)化正當(dāng)時(shí)。

    三年互聯(lián)網(wǎng)數(shù)據(jù)分析經(jīng)驗(yàn),擅長(zhǎng)Excel、SQL、Python、PowerBI數(shù)據(jù)處理工具,數(shù)據(jù)可視化、商業(yè)數(shù)據(jù)分析技能,統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)知識(shí),持續(xù)創(chuàng)作數(shù)據(jù)分析內(nèi)容,點(diǎn)贊關(guān)注,不迷路。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年7月5日 17:57
    下一篇 2022年7月5日 17:57

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息