python基于word模板批量生成word文件
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()
最后结果
python基于word模板批量生成word文件的更多相关文章
- FluentData-新型轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码
FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.Model 利用T4模板,[MultipleOutputHelper.ttinclude]批量生成多文件 ...
- 依据word模板批量生成试卷
java-word-MassProduction 目录 使用方法 开发流程 一.使用方法 1.制造题库所需Word模板 需要填充数据的地方使用 ${pid} 代替. 将这个word选择另存为,保存格式 ...
- T4模板批量生成代码文件
<#@ template debug="false" hostspecific="true" language="C#" #> ...
- C# 通过word模板动态生成Word
object oMissing = System.Reflection.Missing.Value; Word._Application oWord = new Word.Application(); ...
- poi读写word模板 / java生成word文档
有一word文档表格 形如: 姓名 ${name} 电话 ${tel} 从数据库读取记录替换上述变量 import java.io.FileOutputStream; import java.util ...
- 【转】- 使用T4模板批量生成代码
前言 之前在 “使用T4模板生成代码 - 初探” 文章简单的使用了T4模板的生成功能,但对于一个模板生成多个实例文件,如何实现这个方式呢?无意发现一个解决方案 “MultipleOutputHelpe ...
- Freemaker基于word模板动态导出压缩文件汇总整理
Freemaker基于word模板动态导出压缩文件汇总整理 Freemaker基于word模板动态导出单个文件思路和代码详情见连接: https://www.cnblogs.com/lsy-blogs ...
- C# 利用WORD模板和标签(bookmark) 批量生成WORD
前言: 由于对C#操作WORD不熟悉,也就留下这么一篇水文,别吐糟...=_=||| 利用Microsoft.Office.Interop.Word (2003版也就11版)——因为部分客户端还是用O ...
- 代码批量生成WORD的遇到的问题及解决
好久没搞工具了,最近因为处理大规模公文处理单文档,自己写了个批量处理WORD的程序:在调试过程中,主要遇到两个问题 第一个是WORD的模板 数据很多,但是WORD模板只需要一个,将数据替换WORD里标 ...
- Python 写了一个批量生成文件夹和批量重命名的工具
Python 写了一个批量生成文件夹和批量重命名的工具 目录 Python 写了一个批量生成文件夹和批量重命名的工具 演示 功能 1. 可以读取excel内容,使用excel单元格内容进行新建文件夹, ...
随机推荐
- scrum和SAFe
昨天公司培训了scrum开发流程和SAFe,留点资料记录一下 网站:www.scrum.cn 资料:<scrum敏捷软件开发>
- Python-celery介绍与快速上手
1.celery介绍: celery是一个基于Python开发的模块,可以帮助我们在开发过程中,对任务进行分发和处理. 详细介绍取自:Python之celery的简介与 ...
- HTML基本介绍与操作
一,HTML介绍 HTML,全称是超文本标记语言(HyperText Markup Language),它是一种用于创建网页的标记语言.标记语言是一种将文本(Text)以及文本相关的其他信息结合起来, ...
- java位运算分析
java位运算 java位运算在平常的编码过程中十分场景,通常框架都替我们封装好了,我对于细节方面反而一知半解,下面就重新梳理一下. 优秀的框架使得我们轻松,也使得我们距离真相越来越远. 位运算种类 ...
- profile2的原理猜想
1, profile2 是一个 entity_type, 可以包含fields, 每个用户都对应一个profile的id, 其实就是type id, 就相当于bundle, 所谓的函数profile ...
- 面试之AQS
https://blog.csdn.net/wwwzhouzy/article/details/119702170 https://copyfuture.com/blogs-details/20200 ...
- esxi虚拟机定时创建快照
1.vim-cmd vmsvc/getallvms 列出所有虚拟机信息 2.获取需要备份的虚拟机的Vmid 3.执行快照 vim-cmd vmsvc/snapshot.create Vmid $( ...
- react video
import React, { useRef, useState, useCallback } from 'react'; import './style.scss'; const typeCheck ...
- windows上Yii2使用workerman整套流程
1.在根目录下新建Worker目录 进入新建的Worker文件夹 运行 LINUX下运行 composer require workerman/workerman win 下运行 composer r ...
- axios与ajax的优缺点
axios和ajax的区别是什么? 1.axios是一个基于Promise的HTTP库,而ajax是对原生XHR的封装: 2.ajax技术实现了局部数据的刷新,而axio ...