1、需要用到docxtpl庫,用于操作word模板
安裝:pip insatll docxtpl
處理之前的word模板
處理后的word
下面直接上代碼揭開它的神秘面紗:
第一步,讀取excel中的內容
import os
import xlrd
from youlai.s_s.ExcelConfig import DataConfig
from docxtpl import DocxTemplate
class ExcelReader: def __init__(self,excel_file): """ 驗證文件是否存在,存在讀取,不存在報錯 :param excel_file: :return: """ if os.path.exists(excel_file): self.excel_file = excel_file self.workbook = xlrd.open_workbook(self.excel_file) self._data=list() else: raise FileNotFoundError("文件不存在") def get_sheet_name(self): ''' 獲取所有sheet名稱 :return: ''' sheet_name_list = self.workbook.sheet_names() return sheet_name_list def data(self,sheet_name): """ 通過名稱,索引讀取sheet內容, 讀取sheet內容 返回一個list里面元素為:字典 先獲取首行 再遍歷剩余測試行,與首行組成dict,放在list :return: """ sheet = self.workbook.sheet_by_name(sheet_name) title = sheet.row_values(0) for col in range(1,sheet.nrows): col_value = sheet.row_values(col) self._data.append(dict(zip(title, col_value))) return self._data
第二步,獲取想要的字段,基于word模板,批量生成對應文件
class Add_word: def cop_word(self): filler = data[data_key.filler] context = { "購房人":data[data_key.buyer], "購買房號": data[data_key.room_number], "身份證號": data[data_key.buyer_ID], "付款金額": data[data_key.paid_amount], "購房人住址": data[data_key.address], "購房人電話": data[data_key.phone_number], "代理人": data[data_key.filler], "訴求": data[data_key.appeal], "合計": data[data_key.purchase_amount], } tpl = DocxTemplate(r'D:\PycharmProjects\youlai\s_s\北新機械城購房人訴求填報表.docx') #模板地址 tpl.render(context) # 渲染替換 tpl.save(f"D:\ss\wordfile\{filler}_write.docx") #新word保存地址 if __name__ == "__main__": reader = ExcelReader(r"D:/ss/商品房.xls") data_list = reader.data('Sheet1') data_key = DataConfig for data in data_list: Add_word().cop_word()
最后結果
浙公網安備 33010602011771號