本期学习python自动化生成word文件的一个小案例,word格式套用创造模板。
需求:一批word文件内容大部分相同,但是其中某个名词需要替换。例如:《鸿门宴》文章中的每一段第一个ldquo;沛公rdquo;,改成ldquo;刘邦rdquo;、ldquo;刘季rdquo;、ldquo;汉高祖rdquo;、ldquo;汉太祖rdquo;,并分别保存文件名为:鸿门宴-刘邦.docx、鸿门宴-刘季.docx、鸿门宴-汉高祖.docx、鸿门宴-汉太祖.docx。
代码如下:
# coding=gbk from docx import Document # 导入docx模块 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 段落对其 from docx.shared import Pt # 字号 from docx.oxml.ns import qn # 字体 name_list=[#39;刘邦#39;,#39;刘季#39;,#39;汉高祖#39;,#39;汉太祖#39;] # 设置名称列表 for name in name_list: def add_context(context): p=document.add_paragraph() # 添加段落 p.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT # 段落左对齐 r=p.add_run(str(context)) # 段落里添加文字 r.font.size=Pt(10) # 字体大小16磅 p.space_after=Pt(50) # 段后5磅 p.space_before=Pt(50) # 段前5磅 # 设置默认字体 document = Document() document.styles[#39;Normal#39;].font.name = u#39;黑体#39; document.styles[#39;Normal#39;]._element.rPr.rFonts.set(qn(#39;w:eastAsia#39;), u#39;黑体#39;) # 添加段落 add_context(#39;%s军霸上,未得与项羽相见。沛公左司马曹无伤使人言于项羽曰:ldquo;沛公欲王关中,使子婴为相,珍宝尽有之。rdquo;项羽大怒曰:ldquo;旦日飨士卒,为击破沛公军!rdquo;当是时,项羽兵四十万,在新丰鸿门;沛公兵十万,在霸上。范增说项羽曰:ldquo;沛公居山东时,贪于财货,好美姬。今入关,财物无所取,妇女无所幸,此其志不在小。吾令人望其气,皆为龙虎,成五采,此天子气也。急击勿失!rdquo;#39;% name) add_context(#39;楚左尹项伯者,项羽季父也,素善留侯张良。张良是时从%s,项伯乃夜驰之沛公军,私见张良,具告以事,欲呼张良与俱去,曰:ldquo;毋从俱死也。rdquo;张良曰:ldquo;臣为韩王送沛公,沛公今事有急,亡去不义,不可不语。rdquo;良乃入,具告沛公。沛公大惊,曰:ldquo;为之奈何?rdquo;张良曰:ldquo;谁为大王为此计者?rdquo;曰:ldquo;鲰生说我曰:lsquo;距关,毋内诸侯,秦地可尽王也。rsquo;故听之。rdquo;良曰:ldquo;料大王士卒足以当项王乎?rdquo;沛公默然,曰:ldquo;固不如也。且为之奈何?rdquo;张良曰:ldquo;请往谓项伯,言沛公不敢背项王也。rdquo;沛公曰:ldquo;君安与项伯有故?rdquo;张良曰:ldquo;秦时与臣游,项伯杀人,臣活之。今事有急,故幸来告良。rdquo;沛公曰:ldquo;孰与君少长?rdquo;良曰:ldquo;长于臣。rdquo;沛公曰:ldquo;君为我呼入,吾得兄事之。rdquo;张良出,要项伯。项伯即入见沛公。沛公奉卮酒为寿,约为婚姻,曰:ldquo;吾入关,秋毫不敢有