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单元格内容进行新建文件夹, ...
随机推荐
- 提取可执行文件中的调试信息 objcopy --only-keep-debug app app.debug
https://blog.csdn.net/CaspianSea/article/details/17269977 set-debug-directory show-debug-directory i ...
- android系统源码编译报错问题分析处理--持续更新
一.build/make/core/base_rules.mk:232: error: packages/services/Car/service: LOCAL_BUILT_MODULE and LO ...
- yolov5s yolov8n 在自己数据集上测试比较(640*640)
yolov5s -> 0.5map: 96.5 -> ncnn:75ms yolov8n -> 0.5map: 94.1 -> ncnn:52ms
- :)torch转onnx总结--|
torch->onnx 参考:参考连接:https://blog.csdn.net/cxx654/article/details/123011332 1 安装 onnx >python - ...
- Excel下载乱码
1.前端:一定不可以以ajax的请求方式,不然会弹出乱码. 要使用<a href="../Ajax/AjaxPrint.ashx?action=PrintClick&Tid=& ...
- Markdown 基础语法 备忘录
在vscode中使用Markdown先要安装一些插件: Markdown Preview Enhanced Paste Image LimfxCodeEX Code Spell Checker 一级标 ...
- docker的生命周期
所有博客仅用于自己学习记录,如有侵权请联系删除,文章来源于公开视频资料,如有需要请移步这里:https://www.bilibili.com/video/BV1o14y1w7b8?p=11&v ...
- PTA-R7-1 圆形体体积计算器
R7-1 圆形体体积计算器 分数 20 全屏浏览题目 切换布局 作者 张高燕 单位 浙江大学 本题要求实现一个常用圆形体体积的计算器.计算公式如下: 球体体积 V=4π*r3/3,其中r是球体半径 ...
- [AGC043B] 123 Triangle
个人思路: 首先,经过 \(1\) 轮就没有 \(3\) 了. 先考虑能否递推前 \(i\) 个数的答案,发现不行. 再考虑能否推出 \(i\) 个数的答案的计算公式,也发现不行. 然后就不会了. 正 ...
- vuexy full-wersion项目安装报错问题处理
npm install grpc@1.23.3 --ignore-scripts npm rebuild node-sass