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单元格内容进行新建文件夹, ...
随机推荐
- TCP&UDP测试工具使用方式方法
第一项:测试TCP 步骤1:首先需要一台电脑上建立一个TCP服务器.并设置一个端口号如下图60003即可.并开启服务 步骤2:在另外一台电脑上,创建一个客户端连接,如下图.输入服务器的IP地址和端口号 ...
- 【服务器数据恢复】ZFS文件系统下ZPOOL下线的数据恢复案例
服务器数据恢复环境:SUN ZFS系列某型号存储阵列:40块磁盘组建的存储池(其中4块磁盘用作全局热备盘),池内划分出若干空间映射到服务器使用:服务器使用Windows操作系统. 服务器故障:服务器在 ...
- centos7.6安装rz命令上传文件
centos7.6安装rz命令 1.执行安装命令:yum -y install lrzsz 2.进行上传操作:rz 跳转到本地文件选择后即可上传
- superset2 开发环境部署+阿里odps连接
引用:https://help.aliyun.com/document_detail/280392.htm https://blog.csdn.net/weixin_45684985/article/ ...
- 如何基于ZK实现高可用架构
zookeeper设计步骤 设计path 节点的路径 选择znode类型 普通节点.临时节点等 设计znode数据 节点中的数据 设计watch 节点的监听事件以及对应的处理 ZK实现主备切换架构 ...
- Vue的hash/history模式
hash路由模式 URL 中的 hash 值只是客户端的一种状态,向服务端发送请求的时候,hash 部分不会被发送: hash 值得改变会在浏览器的历史记增加访问记录,所以可以通过浏览器的回退.前进控 ...
- c语言学习---gets()读取字符串,以及\0,fgets()put()fputs()
#include<stdio.h> //gets()读取字符串, 可以读取空格 int main() { char num[2] = "";//gets 也会造成内存污 ...
- Excel——解除工作表保护
策略:删除密码保护,而非破解密码 例 该工作簿有工作表保护,因忘记密码,无法更改内容. 解决方案 1.用压缩软件打开表格. 2.向下进入目录:xl/worksheets,选择sheet1.xml,用记 ...
- 打卡node day06 ---登录和注册接口
1, nodemon 自动更新代码 npm i -g nodemon 启动: nodemon server.js 2,注册接口 1)目录结构 2)server.js const express = r ...
- Chrome 中设置默认搜索引擎为 google.com
https://google.com/search?q=%s&ref=opensearch&safe=off 那么就可以使搜索结果默认在新标签页打开,同时关闭了搜索结果的安全过滤. ...