利用python中pandas和docx处理word和excel数据

有个项目word报告中,如图,数据需要修改,要求和excel表中数据一致

22

333

要求将起深,终点埋深,管段长度和检测长度,都按照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)

其中文档列表如图,将数据表和对应的报告文档位置整理好,运行代码即可完成数据处理

444

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容