午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

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

 excel05 2022-07-01 發(fā)布于福建

假設(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批量生成合同

文章圖片1

Python庫(kù)安裝

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

!pip install openpyxl
!pip install docxtpl

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

文章圖片2

設(shè)置合同模板

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

文章圖片3

其實(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
文章圖片5

循環(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
文章圖片6

此外還可以使用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['甲方']))
文章圖片7

代碼封裝

將以上所有的代碼進(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['甲方']))
文章圖片8

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

文章圖片9

以上就是作者使用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)注,不迷路。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多