情景分析
在外业核验的项目中,会需要制作大量外业现场核验单,比较烦琐和费时费力,通过python批量对word文件进行修改制作外业核验单可以提高工作效率。
所需材料
(1)外业现场核验单模版(.word)
需要将外业核验单中的唯一编号、核验时间、位置、占地面积、地类名称、规划用途以及遥感影像补充完整。
(2)数据信息台账表(.word)
(3)插入的照片(.word)
照片要按外业核验图斑的唯一编号进行命名。
代码
下面展示一些 内联代码片
。
#导入包
from datetime import datetime
import os
from docx import Document
import pandas as pd
from docx.shared import Inches,Cm,Pt
def piliangheyan(TZxls,docx,photopath):
"""
:param TZxls:输入台账信息表格
:param docx: 输入现场核验单模版文档
:param photopath:输入影像存放文件夹
:return:制作的现场核验单文档(以唯一编号命名)
"""
Taizhang=pd.read_excel(io=TZxls)
print(Taizhang)
print(Taizhang.loc[0][2])
#获取表格的行数
hangshu=Taizhang.shape[0]
print(hangshu)
# print(doc)
# count=0
# print(len(table))
# print(table[0].cell(1,2).text)
# 遍历每个段落
for n in range(hangshu):
doc = Document(docx)
table = doc.tables
for p in doc.paragraphs:
if 'XXXX' in p.text:
inline = p.runs
print(inline)
for i in range(len(inline)):
# print(i)
if 'XXXX' in inline[i].text:
text = inline[i].text.replace('XXXX', Taizhang.loc[n][1])
inline[i].text = text
run1=table[0].cell(0,2).paragraphs[0].add_run(str(Taizhang.loc[n][2]))
run1.font.name = 'Times New Roman'
# print("2023年6月8日")
# table[0].cell(0,4).text="2023年6月8日"
# print(Taizhang.loc[0][3])
# print("2023年6月8日")
run2=table[0].cell(0,4).paragraphs[0].add_run(Taizhang.loc[n][3])
run2.font.name = 'Times New Roman'
run3=table[0].cell(1,2).paragraphs[0].add_run(Taizhang.loc[n][4])
run3.font.name = 'Times New Roman'
# print(type(str(Taizhang.loc[0][5])))
# print(type("113.41"))
run4=table[0].cell(2,2).paragraphs[0].add_run(str(Taizhang.loc[n][5]))
run4.font.name = 'Times New Roman'
# table[0].cell(2,2).text="113.4"
run5=table[0].cell(2,4).paragraphs[0].add_run(Taizhang.loc[n][6])
run5.font.name = 'Times New Roman'
run6=table[0].cell(3,2).paragraphs[0].add_run(Taizhang.loc[0][7])
run6.font.name = 'Times New Roman'
run7=table[0].cell(5,1).paragraphs[0].add_run()
path=os.path.join(photopath,str(Taizhang.loc[n][2])+'.png')
print(path)
picture =run7.add_picture(path)
picture.height=Cm(5.2)
picture.width=Cm(7.4)
doc.save("%s_外业核验单.docx"%Taizhang.loc[n][2])
piliangheyan(r"C:\Users\*****\数据台账信息表.xlsx","模板.docx","C:\\Users\\***\\影像照片\\")
结果
会在当前目录下制作三个以唯一编码命名的外业现场核验单(.word)
制作的唯一编码为123456788的外业现场核验单
说明:本文中所有数据信息和照片均为虚构测试数据,不代表真实情况。