最近在给律师同行准备交流的素材,同时在业务上,也遇到一个课题,A顾问公司是我的客户,经常会集中统计拖欠其货款的公司名单,委托我批量发送律师函进行催款。一次做十几二十份律师函,而且重复工作做的耗时且乏味。该单位业务类型单一,我想是否可以利用一下python工具,制作批量化的律师函,既能提升效率,也为后期的服务减少工作消耗。

废话不多说,直接上干货。

首先电脑里得提前先安装好python3和pycharm,这个前提操作不作赘述。先介绍一下我们这里要用的python库——python-docx,是一个专门操作office docx文档的库,注意是docx文档,不是doc文档,doc文档和docx文档是不一样的,docx文档本质上是一个压缩文件。当然目前office2007和以后的版本都是docx格式,也是目前的通用主流,想必没人电脑里操作文档首选office2003了吧。当然了,我们也可以使用win32com库来进行操作,但是这个库最大的问题是只能运行于windows系统,然而我们好多律师小伙伴也会在mac平台上工作(即使好多购买mac的小伙伴偷偷把系统装回了windows)。

第一步:准备工作:

安装python-docx和lxml库。

在Pycharm中File -> Settings ->Project Interpreter

最右边的加号点进去,搜索这两个库安装即可

第二步:新建py文件,导入库文件

#encoding:utf-8from docx import Documentfrom docx.oxml.ns import qnfrom docx.shared import Ptimport re                            #python正则表达式的库

第三步:找一份该公司的律师函,作为模板,下标出来的地方,意味着这些部分是每份律师函根据对象不同需要调整的地方。


第四步:将下标部分内容进行替换,替换为特殊字符作为标记,中英文符号都可以(建议不要使用“.()[]\”等特殊字符)。这里我使用的我名字的缩写大写:YYJ。模板文件改好后,我将其另存为命名为“律师函C.docx”。这就是我们后面我们要批量进行复制的父文件。


第五步:编写逻辑代码:

rootPath = r"C:\坚果云\我的坚果云\综合其他\py_project\TeaCases\office\example2\\" #获取父文件所在根目录file_c = rootPath + '律师函C.docx'   #我的模板文件的根目录地址

#A是一个两层嵌套列表,每个子列表,代表的就是要将父文件中"YYJ"替换的内容。A = [['河南大A环保工程有限公司', '2018年11月', '一', 'SLAH010273', '56000', '2018年8月', '07月29日'],     ['江苏小B环保工程有限公司', '2017年10月', '贰', '分别为SLAH0102274、SLAH0102275、SLAH0102276', '76000', '2018年8月', '07月29日'],     ['上海大C环保工程有限公司', '2016年9月', '三', 'SBAH0102274', '86000', '2016年12月', '07月29日'],     ['北京小D环保工程有限公司', '2015年8月', '肆', 'SCDH0103274', '96500', '2015年8月', '07月29日'],     ['四川小E环保工程有限公司', '2014年7月', '五', 'SDG0102375', '47000', '2014年8月', '07月29日'],     ['杭州大F环保工程有限公司', '2013年6月', '六', 'SLAH0104276', '123000', '2013年8月', '07月29日'],     ['东北小G环保工程有限公司', '2012年5月', '七', 'SLAH0105277', '416000', '2012年8月', '07月29日'],     ['云南大L环保工程有限公司', '2011年4月', '八', 'SLAH0106279', '13000', '2011年7月', '07月29日'],     ['河北小J环保工程有限公司', '2010年3月', '九', 'SLAH0107280', '46000', '2010年5月', '07月29日'],     ['吉林大P环保工程有限公司', '2009年2月', '十', 'SLAH0101290', '12300', '2009年4月', '07月29日'],     ['海南小K环保工程有限公司', '2008年1月', '十一', 'SLAH0102130', '421000', '2008年6月', '07月29日'],     ]

#循环A列表,item代表A列表中每个元素for item in A:    document = Document(file_c)     #实例化Document对象,获取父文件地址,实例化为document    for x in item:                  # 遍历子列表中的元素        for y in document.paragraphs:           #遍历父文件的每一个段落            check = re.search("YYJ", y.text, flags=re.M)     #正则,检查当下段落是否含有“YYJ”            if check is not None:                y.text = y.text.replace('YYJ', x, 1)    #如果含有"YYJ",则将“YYJ”替换为当下的子列表元素,只能替换一次                y.style.font.size = Pt(12)       #该段落字体设置为12,就是小四的大小                break                            #跳出本循环    newName=rootPath+"律师函("+item[0]+").docx"     #到这里,一份新律师函内容已经修改好了,将其命名    document.styles['Normal'].font.name = '楷体'    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '楷体') #全文设置为楷体    document.save(newName)                #以新名字保存

作为律师朋友,尤其是没有基础的律师朋友可能会读不懂。其实没有关系,实在读不懂会使用就可以了。如果有了一定的pyhon基础,其实就会觉得非常简单,无法就是调用第三方库的操作而已。python-dox这个库对中文的支持没有英文那么好,所以替换完的时候要设置下字体格式,因为我原文正文部分都是楷体小四。所以每次替换完我都要设置下该段落的字体大小,最后统一下全文的字体为楷体。这里设置全局字体是下面的代码,无需理解其原理,照抄即可。

document.styles['Normal'].font.name = '楷体'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '楷体') #全文设置为楷体

第六步:跑代码运行


运行成功,打开部分文件检查一下,发现没有错误,工具顺利制作成功。今后该客户再有类似的需求,只需要将A列表改一下,剩下分分钟就搞定了。python就是这样,越是有规律可循,重复度越高的工作,效率提升越明显。是不是工具一次制作,终身使用呢。律师小伙伴们,是不是可以来尝尝鲜呢?

作者原创,非经授权拒绝转载,违者必究。

作者:虞元坚 上海正策律师事务所 律师 全栈网络工程师/法律大数据应用领域专家。擅长领域:争议解决与诉讼、与软件开发和互联网相关的知识产权、不正当竞争、经济犯罪、科技产业投融资等。欢迎关注法律大数据公众号,和律师朋友们都在使用的随身工具——律师云助理。


mfc 制作不同的文档模板mdi不同的子窗体_法律行业python教程——利用python批量制作律师函...相关推荐

  1. mfc 制作不同的文档模板mdi不同的子窗体_对IT项目售前解决方案制作的一些思考...

    作者:人月神话,新浪博客同名 简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践 今天准备对于IT项目售前解决方案的制作,对于一个软件企业来说,往往会针对自己的产品线和产品 ...

  2. mfc 制作不同的文档模板mdi不同的子窗体_制作ACK集群自定义节点镜像的正确姿势...

    随着云原生时代的到来,用户应用.业务上云的需求也越来越多,不同的业务场景对容器平台的需求也不尽相同,其中一个非常重要的需求就是使用自定义镜像创建ACK集群. ACK支持用户使用自定义镜像创建Kuber ...

  3. mfc 制作不同的文档模板mdi不同的子窗体_鹤岗水利渡槽钢模板设计-哈尔滨同顺钢模板...

    我们知道圆柱木模板的作用就是通过将木板定型,制作成圆柱形的模具,用来打造混凝土圆柱子,还可以将木板成其他形状制作成异形板.5.做清水混凝土:浇筑物件表面光滑美观,减少墙壁二次抹灰,可直接贴面装饰,减缩 ...

  4. python对律师的作用_法律行业python教程——利用python批量制作律师函

    最近在给律师同行准备交流的素材,同时在业务上,也遇到一个课题,A顾问公司是我的客户,经常会集中统计拖欠其货款的公司名单,委托我批量发送律师函进行催款.一次做十几二十份律师函,而且重复工作做的耗时且乏味 ...

  5. 深入浅出MFC文档/视图架构之文档模板

    在"文档/视图"架构的MFC程序中,提供了文档模板管理者类CDocManager,由它管理应用程序所包含的文档模板.我们先看看这个类的声明: / // CDocTemplate m ...

  6. 十三种技术文档模板_帮助企业制作帮助文档的6大“黑科技”工具!

    在日常产品使用的过程中,经常会遇到一些操作上的问题而这时我们通常会翻阅产品的使用说明书,而对于线上的产品来说通常都会有帮助文档,帮助文档的作用就是对用户操作过程中遇到的种种问题做详细的解答,同时也是对 ...

  7. 用Axure制作一个PRD文档(结尾分享模板)

    经常有小伙伴在微信上问我axure版本的PRD写法,今天就系统的跟大家分享一下,如何用axure制作一个完善的PRD,废话不多说,直接开始干货分享. 1.修改记录 修改记录主要记录你对原型的修改内容, ...

  8. VC++ 多文档模板(添加新文档模板)编程实例

    现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...

  9. MFC应用程序框架-文档/视结构

    MFC应用程序框架-文档/视结构 1.MFC单文档应用程序结构 2.文档对象 2.1基类CDocument 2.2在应用程序中使用文档类的典型步骤 3.视的对象 3.1基类CView 3.2常用的CV ...

  10. MFC创建新Excel文档并设置其中的格式和字体

    MFC创建新Excel文档并设置其中的格式和字体 转载 生成Excel.obl对象类excel.h 创建对象 [cpp] view plaincopyprint? Range m_ExlRge;    ...

最新文章

  1. gdb常用调试命令汇总!
  2. 动手学深度学习需要这些数学基础知识
  3. SmartNIC/DPU — 主流厂商
  4. mysql 查询 字段是否为空
  5. java异步调用数据库存储过程详解,java中如何调用存储过程
  6. 杨清彦:《像三国》游戏3D动效制作经验分享
  7. pythonchar中的拟合方法_在python中利用numpy求解多项式以及多项式拟合的方法
  8. php制作简单的用户登陆,如何用php代码实现简单的用户登陆以及登陆验证功能
  9. npm安装与卸载和cordova及ionic项目打包调试等相关命令总结归纳
  10. 奔小康赚大钱(HDU-2255)
  11. 平台表单默认按钮的使用及效果展示——JEPLUS软件快速开发平台
  12. ArcGIS三种方式打断相交线------拓扑法
  13. New features in EJB3.1 (Part 4)
  14. Listary安装+破解
  15. 杀毒软件 对应的进程名称
  16. ubuntu 14.04 更新 flash
  17. (萌新的数电学习)用 VHDL语言设计一个异或门
  18. 24个扁平风格图标的PSD格式免费下载
  19. 瑞吉外卖——菜品展示功能(移动端)
  20. 数学符号--罗马字母

热门文章

  1. adb -s emulator-5554 install JDKCast-PAP.apk
  2. Rhythmk 一步一步学 JAVA(9) JAVA 基础笔记[枚举,...]
  3. Openfire+Spark+Spark Web安装配置(一)
  4. web开发时碰到的问题以及心得经验
  5. Linux的主动实行措施cron和crontab(1)
  6. 李昌镐究竟是不是神?
  7. 2020-12-28 learning opencv3: 十一:resize, pyrDown, buildPyramid, pyrUp
  8. 七月算法机器学习1 概率论
  9. Aittit rpc的实现协议 JSON-RPC XML-RPC . Ws协议webservice 目录 1. XML-RPC协议 1 1.1. JSON-RPC远程调用协议 - CieloSun
  10. Atitit 人脸识别 眼睛形态 attilax总结