金融科技之高效办公(一):自动生成信托计划说明书

2023-10-10 09:50

本文主要是介绍金融科技之高效办公(一):自动生成信托计划说明书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

金融科技之高效办公:自动生成信托计划说明书

    • 背景
    • 需求
    • 编写

背景

计算机极大地提高了人们的工作效率,但除了使用市场上成熟的软件外,金融业还有根据实际业务需要,自行编写提高办公效率的小工具的需求。

昨天下午实习公司给了个任务,说是比较着急:根据两个word文件段落的映射关系自动生成信托计划说明书。具体来讲,一个文件是尽调报告,里面有业务参与方的相关信息,信息按照特定的模板填入。另一个文件是计划说明书,也有特定的模板。

(所以这个项目其实没有太多内容,就是用Python将一个word文件中的指定段落复制到另一个word文件中指定位置。)

尽调报告:
在这里插入图片描述
说明书:
在这里插入图片描述
映射表:
在这里插入图片描述

需求

之前都是员工人工进行复制、粘贴,但公司体量较大,每天都要处理大量的合同,所以需要编写一个根据映射关系自动生成计划说明书的程序来提高办公效率。

编写

最终通过查资料,最终利用Python-docx库开发了一个可以将A文件中两个段落之间的内容(包括文字和表格)复制到B文件指定段落的后的程序。

因为第一次接触Python-docx,对很多接口的原理和细节不是很了解。Python-docx的原理好像是将Python-docx的结构转换成xml。去年数据有做过用Java处理xml的程序,但时间久了已经忘了…

下面直接给出源码:
因为第一次使用Python-docx,所有如果有不规范或者不简介的地方,请见谅并指出。
当然,中使用前要通过pip安装Python-docx.

from docx import Document
from docx.text.paragraph import Paragraph
from docx.oxml.text.paragraph import CT_P
from docx.oxml.table import CT_Tbl
from docx.table import Table
from copy import deepcopy
import pandas  as pddef copyText(filename,paratext,Para):document = Document(filename)paras=document.paragraphsindex=0if type(paratext)==str:print('copy:',paratext,Para.text)for para in paras:if para.text==paratext:index=paras.index(para)+1para=paras[index]else:print('copy:',Para.text,paratext.text)for para in paras:if  para.text== paratext.text:index = paras.index(para) + 1paratext.runs[0].drawing_lst:para = paras[index]newPara=para.insert_paragraph_before()for run in Para.runs:#复制内容(包括样式)newParaRun=newPara.add_run(run.text)newParaRun.bold = run.boldnewParaRun.italic = run.italicnewParaRun.underline = run.underlinenewParaRun.font.color.rgb = run.font.color.rgbnewParaRun.style.name = run.style.namenewPara.paragraph_format.alignment = Para.paragraph_format.alignmentnewPara.paragraph_format.first_line_indent = Para.paragraph_format.first_line_indentnewPara.paragraph_format.left_indent = Para.paragraph_format.left_indentnewPara.paragraph_format.right_indent = Para.paragraph_format.right_indentdocument.save(filename)def copyTable(filename,paratext,table):
#复制表格document = Document(filename)paras = document.paragraphsif type(paratext)==str:for para in paras:#print(para.text)if paratext == para.text :paragraph=paratbl, p = table._tbl, paragraph._pelse:for para in paras:# print(para.text)if paratext.text == para.text:paragraph = paratbl, p = table._tbl, paragraph._pnew_tbl = deepcopy(tbl)p.addnext(new_tbl)document.save(filename)def Copy_Contents_Between_ParaA_ParaB_to_ParaC(filename1, filename2,Paratext1,Paratext2,Paratext3):documentA = Document(filename1)paragraphs = documentA.paragraphs#所有的段落Paratext1 = Paratext1.encode('utf-8').decode('utf-8')for aPara in paragraphs:if Paratext1 == aPara.text :#匹配到了开始段落ele = aPara._p.getnext()breakwhile(True):#向后遍历if ele==None:breakif ele.tag == '':breakif isinstance(ele, CT_P):#是段落para = Paragraph(ele, documentA)if Paratext2 == para.text:breakcopyText(filename2, Paratext3, para)#复制表格if para.text!='':Paratext3=paraelif isinstance(ele, CT_Tbl):#是表格table=Table(ele,documentA)copyTable(filename2,Paratext3,table)#复制表格ele=ele.getnext()if __name__ == '__main__':data = pd.read_excel('尽调-计划说明书映射表.xlsx')for i in range(len(data['计划说明书(生成表)'])):Copy_Contents_Between_ParaA_ParaB_to_ParaC('数据来源-尽调报告.docx','生成的信托计划说明书.docx',data['尽调报告-开始段落'][i],data['尽调报告-结束段落'][i],data['计划说明书(生成表)'][i])

程序执行后生成的计划说明书:
在这里插入图片描述
可以看到,尽调报告中指定的数据以及被复制到计划说明书的指定位置了。

待解决的问题:
上面的程序可以复制文字和表格以及样式,但是无法复制图片。据了解,Python-docx没有提供提取指定位置的图片的接口(至少在官方手册中没有找到),所以需要二次开发,这就要去研究Python-docx的原理和一些xml的知识了。但因为时间有限(网课还是要看的,作业还是要写的),就把这个问题留给我的实习负责人了。
如果大佬们知道如何解决图片处理的问题,请不吝赐教。

这篇关于金融科技之高效办公(一):自动生成信托计划说明书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/179660

相关文章

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from