面向对象使用python-docx模块制作格式化文本(奖状生成器)
更新:以下模塊已經(jīng)上傳到pypi,可以直接使用
pip install certimaker
當(dāng)然,這個(gè)程序需要預(yù)裝兩個(gè)依賴包,如果沒(méi)有安裝過(guò)python-docx模塊和pinyin模塊的話,可以使用以下代碼安裝這兩個(gè)模塊:
下載certimaker模塊,然后在本地代碼中使用以下代碼就可以快速生成獎(jiǎng)狀
from certimaker.certimaker import make_certificate make_certificate('王大雷','國(guó)家獎(jiǎng)學(xué)金')完成這個(gè)小項(xiàng)目需要掌握以下知識(shí)點(diǎn):
1.第三方模塊的import使用方法
2.word文檔的docx模型(doc/paragraph/run三層結(jié)構(gòu))
3.類和函數(shù)寫(xiě)法(OOP)基礎(chǔ)
4.pinyin、datetime模塊的基本使用方法
代碼如下:
from docx import Document from docx.shared import Pt, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn import pinyin import datetimeBLACK = RGBColor(0,0,0) RED = RGBColor(255,0,0) GREEN = RGBColor(0,255,0) BLUE = RGBColor(0,0,255) TODATE = datetime.datetime.now().strftime('%Y.%m.%d') THISY = datetime.datetime.now().strftime('%Y') LASTY = str(int(THISY)-1) class DocWriter:def __init__(self,name,award):self.doc = Document()self.name = nameself.award = awarddef new_para(self):self.para = self.doc.add_paragraph()def write_run(self, content, fontsize = 25, fontname = '華文中宋',alignment = WD_ALIGN_PARAGRAPH.LEFT, color = BLACK, underline = False, bold = False):para = self.pararun = para.add_run(content)run.font.size = Pt(fontsize)run.font.name = fontnamerun.font.underline = underlinerun.font.bold = boldr = run._element.rPr.rFontsr.set(qn('w:eastAsia'),fontname)para.alignment = alignmentrun.font.color.rgb = colordef signature(self,sign):self.new_para()self.write_run(sign,alignment=WD_ALIGN_PARAGRAPH.RIGHT)self.new_para()self.write_run(TODATE,alignment=WD_ALIGN_PARAGRAPH.RIGHT)def save_doc(self):pyname = pinyin.get(self.name, format='strip', delimiter="")pyaward= pinyin.get(self.award,format='strip', delimiter="")filename = pyname + '_'+ pyaward + '.docx'self.doc.save(filename)def make_certificate(name,award):awardoc = DocWriter(name,award)awardoc.new_para()awardoc.write_run('獎(jiǎng) 狀', fontsize = 50,alignment= WD_ALIGN_PARAGRAPH.CENTER,color = RED,bold=True)awardoc.new_para()awardoc.write_run(' '*2+name+' '*2,fontsize = 30,underline = True,bold=True)awardoc.write_run(' 同學(xué):',fontsize = 30)awardoc.new_para()awardoc.write_run(f'\t你在{LASTY}—{THISY}年度表現(xiàn)優(yōu)異,被授予')awardoc.write_run(' '*2 + award + ' '*2, underline=True, bold=True)awardoc.write_run('榮譽(yù)稱號(hào)。')awardoc.new_para()awardoc.write_run('\t特發(fā)此證,以資鼓勵(lì)!')awardoc.signature('python大學(xué)')awardoc.save_doc()name = '李雷' award = '三好學(xué)生' make_certificate(name,award)運(yùn)行之后會(huì)生成.docx類型的word文檔如下:
打開(kāi)之后,我們可以看到成功生成了一張獎(jiǎng)狀:
我們把以上代碼保存為模塊’docxclass.py’,就可以在其他的python代碼中調(diào)用這個(gè)模塊里面定義的函數(shù)make_certificate(),我們新建一個(gè)新的python文件,寫(xiě)入以下代碼:
from docxclass import make_certificate award_dict = {'李雷':'三好學(xué)生','韓梅梅':'學(xué)習(xí)積極分子','Jim':'體育積極分子','Kate':'文藝積極分子','Lucy':'勞動(dòng)積極分子','Lily':'德育積極分子', }for name,award in award_dict.items():make_certificate(name,award)這樣就可以批量生成獎(jiǎng)狀了:
我們隨意打開(kāi)其中的一個(gè),就可以得到想要的獎(jiǎng)狀效果:
總結(jié)
以上是生活随笔為你收集整理的面向对象使用python-docx模块制作格式化文本(奖状生成器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端必备:六款CSS工具让代码充满魅力
- 下一篇: Python爬虫简介