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单元格内容进行新建文件夹, ...
随机推荐
- DAC双通道模板
#define DAC_C #include "dac.h" float DAC_DispenseA; float DAC_DispenseB; void MyDAC_Init(v ...
- 浅谈Redis大Key与热Key
如何定义大 Key 和 热 Key 如何定义大 Key 如何定义热 Key 大 Key 和 热 Key 产生的原因 大 Key 和 热 Key 有哪些危害 大 Key 的危害 热 Key 的危害 如何 ...
- Kubernetes学习笔记(一)
参考: kubectl Cheat Sheet | Kubernetes Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区 Pla ...
- nginx: the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
Nginx如果未开启SSL模块,配置Https时将提示如题错误 原因:nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现 ...
- call bind的实现以及数组常用方法
1.call 实现(apply 类似) Function.prototype.call= function(context){ context = context || window; ...
- kubectl的vistor模式
package main import ( "encoding/json" "encoding/xml" "log" ) type Visi ...
- disp
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg); disp(s ...
- redis获取图形验证码
1.在pom文件中先导入生成图像的依赖包 <dependency> <groupId>com.baomidou</groupId> <artifactId&g ...
- 一些test短代码
#include <stdio.h> int main(){ char ray_tx_pwr[2][3]={{1,2,3},{4,5,6}}; int i = 0; printf(&quo ...
- pytorch循环神经网络实现回归预测 代码
pytorch循环神经网络实现回归预测 学习视频:莫烦python # RNN for classification import torch import numpy as np import to ...