首页 > 编程语言 >python基于word模板批量生成word文件

python基于word模板批量生成word文件

时间:2023-02-24 16:44:12浏览次数:44  
标签:word name python self key sheet data 模板

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()

最后结果

 

标签:word,name,python,self,key,sheet,data,模板
From: https://www.cnblogs.com/yttbk/p/17152062.html

相关文章

  • 设计模式之(13)--模板方法模式
    今天我们来学习下模板方法设计模式。模板方法(TemplateMethodPattern):抽象的父类中定义一个操作中算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一......
  • 如何利用Python分析数据--绘图
    一、前言1)本文需要了解Python相关的基础知识。2))本文参考快速入门指南—Matplotlib3.7.0文档,实现利用Python完成日常的图表绘制。二、基础知识1)本文的......
  • 最简大数据开发环境(二)Python+Spark版
     最简大数据开发环境(一)Scala+Spark版最简大数据开发环境(二)Python+Spark版一年前,分享了基于sbt搭建的用Scala语言开发Spark应用的教程,最近又用Python语言实践......
  • Python+Appium实现APP自动化测试
    一、环境准备1.脚本语言:Python3.xIDE:安装Pycharm2.安装JavaJDK、AndroidSDK3.adb环境,path添加E:\Software\Android_SDK\platform-tools4.安装Appiumforwindows,官......
  • 创建dashboard用户时报错:Error EINVAL: Please specify the file containing the pass
    创建dashboard的用户的时候出现了报错[root@cephceph]#cephdashboardac-user-createadminadminadministratorErrorEINVAL:Pleasespecifythefilecontain......
  • GDB解coredump文件报Python异常解决办法
    GDB解coredump文件报Python异常解决办法解core文件经常提示以下错误信息:PythonException<class'ModuleNotFoundError'>Nomodulenamed'gdb':gdb:warning:Couldno......
  • 为什么CAD文字粘贴到Word后变成黑框了?
    些小伙伴在CAD设计过程中发现CAD文字粘贴到Word后变成了黑框,不显示文字,这是什么情况?又该如何解决呢?本文小编就以浩辰CAD软件为例来给大家分享一下CAD文字粘贴到Word后变成......
  • Python 简易小项目
    Prerequisite实习的时候有个这样要求,虽然我不太想做,但毕竟是工作(其实还有点意思),于是我花了几个小时出(魔改)了几道,此贴作个记录构建一个简易图书馆#!/usr/bin/envpytho......
  • Python中出现IndentationError:unindent does not match any outer indentation level
    【问题】 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError:unindentdoesnotmatchanyo......
  • Python代码段
    EXCEL导出操作deflists_to_xls(rows,xls,header=None):columns=rows[0]range_columns=range(len(columns))data=rows[1:]startrow=0......