有个项目word报告中,如图,数据需要修改,要求和excel表中数据一致
要求将起深,终点埋深,管段长度和检测长度,都按照excel数据表中内容修改,但是设计到的报告文件有几十个,近5000条记录需要修改
就查找资料利用pandas和docx进行了数据处理
import pandas as pd
from docx import Document
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT # 导入单元格垂直对齐
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
文件名 = '文档列表.xlsx'
文件列表 = pd.read_excel(文件名)
for xm_file in 文件列表.index:
baogao_name = 文件列表.at[xm_file,'报告']
baogao = Document(baogao_name)
for 评估表 in baogao.tables:
if 评估表.cell(1,0).text=='敷设年代':
qsj = str.upper(评估表.cell(0,4).text)
zzj = str.upper(评估表.cell(0,7).text)
sjb_name = 文件列表.at[xm_file,'数据表']
sjb = pd.read_excel(sjb_name,sheet_name="检测与评估信息",header=None,skiprows=3,usecols=[10,15,20,21,27,28],names=['起始井编号','结束井编号','起点','终点','管段长度','检测长度'])
for i in sjb.index:
if qsj == str.upper(sjb.at[i,'起始井编号']) and zzj == str.upper(sjb.at[i,'结束井编号']):
评估表.cell(1,4).text='{:.2f}m'.format(sjb.at[i,'起点'])
评估表.cell(1,7).text='{:.2f}m'.format(sjb.at[i,'终点'])
评估表.cell(3,4).text='{:.2f}m'.format(sjb.at[i,'管段长度'])
评估表.cell(3,7).text='{:.2f}m'.format(sjb.at[i,'检测长度'])
评估表.cell(1,4).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
评估表.cell(1,4).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
评估表.cell(1,7).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
评估表.cell(1,7).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
评估表.cell(3,4).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
评估表.cell(3,4).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
评估表.cell(3,7).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
评估表.cell(3,7).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
print('%d %s-%s' % (i,qsj,zzj))
baogao.save(baogao_name)
print("已完成",baogao_name)
其中文档列表如图,将数据表和对应的报告文档位置整理好,运行代码即可完成数据处理
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容