Excel2016打印預覽表格的教程是什么(excel2016怎么看打印預覽)">Excel2016打印預覽表格的教程是什么(excel2016怎么看打印預覽)
974
2022-05-29
最近在給律師同行準備交流的素材,同時在業務上,也遇到一個課題,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-8 from docx import Document from docx.oxml.ns import qn from docx.shared import Pt import 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就是這樣,越是有規律可循,重復度越高的工作,效率提升越明顯。是不是工具一次制作,終身使用呢。律師小伙伴們,是不是可以來嘗嘗鮮呢?
Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。