比方說,有一天我開了一家空調公司,我暫時給他打電話天強空調安裝裝置公司酒吧,假裝自己有公司,拿個大生意,就是給甘肅省的各個高校安裝空調(其實這裡的氣候基本不用空調,試想一下),那麼接下來就是面對簽約,所以甘肅省很多高校都要簽上百個合同, 捷徑是什麼?
不用說,我們優先使用python來解決這個問題,python是辦公自動化的強大工具,本節使用python批量生成合約,學習這個解決重複錄製合約的問題,讓我們一起學習習
示例工具:anconda37Python 庫安裝首先,安裝本節需要用到的兩個包,openpyxl 和 docxtpl 庫,在 ** 行中使用以下命令完成安裝。本文介紹了 openpyxl 和 docxtpl 庫的使用。
適用範圍:Python批量生成合約。
!pip install openpyxl!pip install docxtpl當出現“成功安裝”字樣時,安裝成功。
設定合同模板
設定乙個合約模板,在文件中插入資料的地方插入乙個類似於 } 的標籤,並傳入字典 } 在標籤上呈現資料 1234,其他下劃線以類似的方式設定。
實際上,本文使用 python 批量生成合約的做法類似於 word 中通過郵件合併批量生成合約的做法,更加靈活高效。
匯入合約資料
匯入預先錄製的合同資料,包括甲方、乙方、產品名稱等字段,並將合同日期轉換為字元。
import pandas as pdfrom openpyxl.utils.dataframe import dataframe_to_rowsdf = pd.read_excel(r'C:使用者商天強台式空調合同為高等院校。 xlsx')df["合同日期"] = df["合同日期"].apply(lambda x:x.strftime("%y-%m-%d"))datas = df
迴圈遍歷每一行資料並將其儲存在字典中,使用 append 函式合併字典,並列印結果,如下所示。
for row in dataframe_to_rows(df,index=false,header=false): data = datas.append(data)datas
此外,還可以使用 openpyxl 庫將合約資料匯入到字典中,原理與上面的匯入方法相同。
from openpyxl import load_workbookwb = load_workbook(r'C:使用者商天強台式空調合同為高等院校。 xlsx')ws = wb['sheet1']datas = for row in range(2, ws.max_row): a = ws[f"a"].value b = ws[f"b"].value c = ws[f"c"].value d = ws[f"d"].value e = ws[f"e"].value f = ws[f"f"].value f = f.strftime("%y-%m-%d") data = datas.append(data)datas匯入docxtpl庫,提前匯入之前建立的合約文件模板,使用render函式渲染{}中的內容,從而達到批量插入資料的目的。
from docxtpl import docxtemplatefor data in datas: tpl = docxtemplate(r'C:使用者商天強桌面承包各高校空調安裝。 docx') tpl.render(data) tpl.s**e(r'C:使用者上天強桌面合同生成{}的空調安裝合同。 docx'.format(data['甲方']))print('空調安裝合同的{}。 生成'.format(data['甲方']))
封裝
將以上所有**封裝並一鍵執行,即可得到如下生成的DOCX合約文件。
import pandas as pdfrom openpyxl.utils.dataframe import dataframe_to_rowsfrom docxtpl import docxtemplatedf = pd.read_excel(r'C:使用者商天強台式空調合同為高等院校。 xlsx')df["合同日期"] = df["合同日期"].apply(lambda x:x.strftime("%y-%m-%d"))datas = for row in dataframe_to_rows(df,index=false,header=false): data = datas.append(data)for data in datas: tpl = docxtemplate(r'C:使用者商天強桌面承包各高校空調安裝。 docx') tpl.render(data) tpl.s**e(r'C:使用者上天強桌面合同生成{}的空調安裝合同。 docx'.format(data['甲方']))print('空調安裝合同已生成'.format(data['甲方']))
開啟任何合同文件,我們看到合同資料已插入到原始下劃線中。
以上就是筆者用python寫了乙個小指令碼,可以輕鬆實現合同文件的批量生成,可以自己動手,解決重複的體力勞動,學習習 python辦公自動化迫在眉睫。