您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用Python讀取Excel數據實現批量生成合同”,在日常操作中,相信很多人在怎么用Python讀取Excel數據實現批量生成合同問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python讀取Excel數據實現批量生成合同”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在我們經濟交往中,有時會涉及到銷售合同的批量制作。比如我們需要根據如下合同數據(Excel),進行批量生成銷售合同(Word)。
我們首先要準備好一份合同模板(Word),將需要替換的合同數據用{{}}表示,如下:
openpyxl是一個操作Excel非常好用的庫,功能相對于xlrd、xlwt來說更為完整,我們首先安裝它:
pip install openpyxl
docxtpl 是一個操作Word非常好用的庫,其主要通過對docx文檔模板加載,從而對其進行修改,我們也安裝下這個庫。
pip install docxtpl
我們可以通過load_workbook方法打開合同數據(Excel表),然后讀取每一個合同數據并存入到data字典,再將每個字典放入到列表datas中。PS:由于讀取的簽約日期是一個時間戳,需要通過strftime方法轉為標準的年月日格式。
from docxtpl import DocxTemplate from openpyxl import load_workbook wb = load_workbook("合同數據.xlsx") ws = wb['Sheet1'] datas = [] for row in range(2, ws.max_row): name1 = ws[f"A{row}"].value name2 = ws[f"B{row}"].value price = ws[f"C{row}"].value product = ws[f"D{row}"].value count = ws[f"E{row}"].value deadline = ws[f"F{row}"].value time = ws[f"G{row}"].value time = time.strftime("%Y-%m-%d") data = {"甲方": name1, "乙方": name2, "合同價款": price, "產品名稱": product, "產品數量": count, "付款期限": deadline, "簽約時間": time} datas.append(data) datas
當然,我們也可以通過pandas大法來讀取合同數據,主要運用到dataframe_to_rows方法,將pandas格式的數據轉為一行一行的數據。index=False表示不需要索引,header=False表示不需要表頭。
import pandas as pd from openpyxl.utils.dataframe import dataframe_to_rows df = pd.read_excel("合同數據.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], "合同價款": row[2], "產品名稱": row[3], "產品數量": row[4], "付款期限": row[5], "簽約時間": row[6]} datas.append(data) datas
我們可以打印datas,效果如下:
[{'甲方': 'J哥', '乙方': '老王', '合同價款': 1000000, '產品名稱': '菜J學Python', '產品數量': 1, '付款期限': 30, '簽約時間': '2022-05-20'}, {'甲方': 'K哥', '乙方': '張三', '合同價款': 20000, '產品名稱': '冰箱', '產品數量': 2, '付款期限': 40, '簽約時間': '2022-05-21'}, {'甲方': 'C哥', '乙方': '李四', '合同價款': 30000, '產品名稱': '電腦', '產品數量': 3, '付款期限': 50, '簽約時間': '2022-05-22'}, {'甲方': 'B哥', '乙方': '王五', '合同價款': 40000, '產品名稱': '洗衣機', '產品數量': 4, '付款期限': 60, '簽約時間': '2022-05-23'}, {'甲方': 'P哥', '乙方': '趙六', '合同價款': 50000, '產品名稱': '微波爐', '產品數量': 5, '付款期限': 70, '簽約時間': '2022-05-24'}]
這里運用for語句遍歷每一個合同數據data(字典格式),打開合同模板,并將data替換掉合同模板中的數據,然后保存為新的銷售合同。
for data in datas: tpl = DocxTemplate('合同模板.docx') tpl.render(data) tpl.save(f'合同生成/{data["甲方"]}的銷售合同{data["簽約時間"]}.docx') print(f'{data["甲方"]}的銷售合同已生成')
代碼運行后,效果如下:
打開其中一個銷售合同,效果如下:
到此,關于“怎么用Python讀取Excel數據實現批量生成合同”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。