python——自动化报告word(1)
python——自动化报告word(1)
本文基于python的docx模块的文本替换功能,自动引用excel数据填入word,实现报告自动化。
文章目录
- python——自动化报告word(1)
- 前言
- 一、思路
- 二、准备文件
-
- 1.模板
- 2.字典
- 三、源码
-
- 1.加载模块
- 2.定义替换函数
- 3.加载文件和输出结果
- 四、实例
- 总结
前言
需要提前安装docx模块。
# 在终端中输入
pip install python-docx
# 或者在jupyter notebook中输入
!pip install python-docx
提示:以下是本篇文章正文内容,下面案例仅供参考学习
一、思路
1.读取word模板;
2.读取预先统计整理好的字典数据;
3.根据指定文本内容(键)和黄色高亮文本格式,替换相应的内容;
4.输出word报告。
二、准备文件
1.模板
word模板为docx格式,约定两个相邻索引分隔符为“#”,用于指明需要替换的文字部分(含表格内容)。图中模板高亮文本部分为索引,为文字替换的定位依据,除实质替换内容相同时,一般索引不能雷同。
2.字典
创建excel文件,含有用于替换内容的字典数据。
三、源码
1.加载模块
需要安装python3.9或以上版本,docx、pandas、numpy、tkinter均需提前装好。
import docx, pandas as pd, numpy as np, tkinter as tk, os
from tkinter.filedialog import askopenfilename
from docx.enum.text import WD_COLOR_INDEX
2.定义替换函数
特别注意docx的run切割原则上是按照文本格式来切割的,但实际存在过度切割的问题,即相同格式相邻的文本内容被切成两个run。两个while循环,是为了解决这一问题。
# 定义文本替换函数
def doc_dic_replace(doc, dic):
# 段落文本替换
for p in doc.paragraphs:
# 原本run文本块的切割按样式切割,但实际存在过度切割的问题
i = 0
while i < len(p.runs):<
qq_39331627: 直接采用格式化处理的 把文字粘贴进print里就行
weixin_42009033: 你最后运行出来了吗
qq_39603064: 感谢博士简明扼要的分享。能否出续集,把插图、如何从CSV数据文件里提取准备词典等详细介绍。感谢
qq_39331627: 博主您好!在运行您的代码后,# 实施替换 p.runs[i].text = dic[p.runs[i].text] 这里报错“float” object is not iterable 请问是为啥啊?