オブジェクト指向のpython-docxモジュールを使用したフォーマット済みテキストの生成(証明書ジェネレーター)

更新:次のモジュールはpypiにアップロードされており、直接使用できます。
pip install certimaker
もちろん、このプログラムには2つのプリインストールパッケージが必要です。python -docxモジュールとpinyinモジュールをインストールしていない場合は、次のコードを使用してこれら2つのモジュールをインストールできます。

pip install python-docx
pin install pinyin

certimakerモジュールをダウンロードし、ローカルコードで次のコードを使用して証明書をすばやく生成します。

from certimaker.certimaker import make_certificate
make_certificate('王大雷','国家奖学金')

以下の点についての知識を持っているために、この小さなプロジェクトの必要性を完了します
。1.サードパーティ製のモジュールを使用すると、インポート
のdocxモデル2.wordの文書(DOC /段落/実行三層構造)
書か3.クラスや関数(OOP)の基本
4.pinyinを、日時モジュールの基本的な使用法

コードは次のとおりです。

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 datetime

BLACK = 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 = name
		self.award = award
	def 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.para
		run = para.add_run(content)
		run.font.size = Pt(fontsize)
		run.font.name = fontname
		run.font.underline = underline
		run.font.bold = bold
		r = run._element.rPr.rFonts
		r.set(qn('w:eastAsia'),fontname)
		para.alignment = alignment
		run.font.color.rgb = color
	def 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('奖  状', 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(' 同学:',fontsize = 30)
	awardoc.new_para()
	awardoc.write_run(f'\t你在{LASTY}—{THISY}年度表现优异,被授予')
	awardoc.write_run(' '*2 + award + ' '*2, underline=True, bold=True)
	awardoc.write_run('荣誉称号。')
	awardoc.new_para()
	awardoc.write_run('\t特发此证,以资鼓励!')
	awardoc.signature('python大学')
	awardoc.save_doc()

name = '李雷'
award = '三好学生'
make_certificate(name,award)

実行すると、.docxタイプのワードドキュメントが次のように生成されます。
ここに画像の説明を挿入
開くと、成功の証明書が生成されたことがわかります。
ここに画像の説明を挿入

上記のコードをモジュール「docxclass.py」として保存し、このモジュールで定義されている関数make_certificate()を他のPythonコードで呼び出すことができます。新しいPythonファイルを作成し、次のコードを記述します。

from docxclass import make_certificate
award_dict = {
	'李雷':'三好学生',
	'韩梅梅':'学习积极分子',
	'Jim':'体育积极分子',
	'Kate':'文艺积极分子',
	'Lucy':'劳动积极分子',
	'Lily':'德育积极分子',
}

for name,award in award_dict.items():
	make_certificate(name,award)

これにより、証明書をバッチで生成できます。

ここに画像の説明を挿入
それらの1つを自由に開いて、目的の証明書の効果を得ることができます。
ここに画像の説明を挿入

元の記事を273件公開 40 件を賞賛 30,000件以上の閲覧

おすすめ

転載: blog.csdn.net/weixin_41855010/article/details/105433376