利用python向word文档模板中写入内容

第一部分:先看成果

Talk is cheap show me the code!(我来翻译一哈:不bb上代码)

import os
os.chdir('D:\\python_major\\auto_office14')
import datetime
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn


doc = Document()
heading_1 = '请 假 条'
paragraph_1 = doc.add_heading(heading_1, level = 1)
paragraph_1.alignment = WD_ALIGN_PARAGRAPH.CENTER


greeting_word = '尊敬的领导:'
paragraph_2 = doc.add_paragraph(greeting_word)


name = input("请输入请假人姓名:")
division = input("请输入所属部门:")
reason = input("请输入请假事由:")
day = input('请输入请假天数:')
detailed_time = input("请输入请假的具体时间:")

word_1 = "    本人"
word_2 = ",所在部门"
word_3 = ",由于"
word_4 = ",需请假"
word_5 = "天,请假的具体时间为"
word_6 = "。"

paragraph_3 = doc.add_paragraph()
paragraph_3.add_run(word_1)
paragraph_3.add_run("{0: ^{1}}".format(name,len(name) + 6)).underline = True
paragraph_3.add_run(word_2)
paragraph_3.add_run("{0: ^{1}}".format(division,len(division) + 6)).underline = True
paragraph_3.add_run(word_3)
paragraph_3.add_run("{0: ^{1}}".format(reason,len(reason) + 6)).underline = True
paragraph_3.add_run(word_4)
paragraph_3.add_run("{0: ^{1}}".format(day,len(day) + 6)).underline = True
paragraph_3.add_run(word_5)
paragraph_3.add_run("{0: ^{1}}".format(detailed_time,len(detailed_time) + 6)).underline = True
paragraph_3.add_run(word_6)
paragraph_3.paragraph_format.line_spacing = 1.5



word_7 = '申请人:'
paragraph_4 = doc.add_paragraph()
paragraph_4.add_run(word_7)
paragraph_4.add_run("{0: ^{1}}".format(name,len(name) + 6)).underline = True
paragraph_4.alignment = WD_ALIGN_PARAGRAPH.RIGHT


word_8 = '日期:'
today_year = datetime.datetime.today().year
today_month = datetime.datetime.today().month
today_day = datetime.datetime.today().day
sign_date = "{}年{}月{}日".format(today_year,today_month,today_day)

paragraph_5 = doc.add_paragraph()
paragraph_5.add_run(word_8)
paragraph_5.add_run("{0: ^{1}}".format(sign_date,len(sign_date) + 6)).underline = True
paragraph_5.alignment = WD_ALIGN_PARAGRAPH.RIGHT

for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        run.font.color.rgb = RGBColor(0,0,0)
        run.font.name = '微软雅黑'
        r = run._element.rPr.rFonts
        r.set(qn('w:eastAsia'),'微软雅黑')

doc.save("{}-请假条.docx".format(name))

print("-"*30)
print("\n{}的请假条已经生成\n\n文件位置在:{}\n\n文件名称为:{}-请假条.docx".format(name,os.getcwd(),name))

至此利用python自动生成请假条的代码就全部执行完毕,应用的难点在于输入文字下划线的显示问题,如果直接对输入的文字加下划线,会显得很挤,如果单纯使用format()方法,生成的只用两侧下划线看上去很别扭,因此最终采取的方式是将两者结合,解决了输入字符下划线显示的问题,当然最后还有中文字符显示的问题

执行效果:

请假条就酱紫生成了,有木有
此处参考文档一:https://blog.csdn.net/lys_828/article/details/104116255
此处参考文档二:https://blog.csdn.net/weixin_42750611/article/details/108351309?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242

此处参考文档三:https://blog.csdn.net/zx77588023/article/details/105895841?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

第二部分:看过程,踩过的坑

遇到报错:

ImportError: No module named 'exceptions'

(遇到问题不要慌,先拿出手机,发个盆友圈=v=/)

遇到这个问题的原因是:缺少python-docx这个包 需要安装

具体解决方法可参考
https://blog.csdn.net/jiangjieqazwsx/article/details/80326214
需要注意的是
1.在下面
https://www.lfd.uci.edu/~gohlke/pythonlibs/

这个网站中下载的docx是红色字体这个,不是链接里面那个(反正我找不到)
(ps:链接里面的那个是这个
python_docx-0.8.6-py2.py3-none-any.whl
不出意外的话应该是找不到,你可以用这个好像是最新的作用是一样的python_docx‑0.8.10‑py2.py3‑none‑any.whl)
是上面这个0.8.10这个是最新的

(Ctrl+F快速查找)
2.需要注意安装路径(不然cmd加载不出来,因为有些浏览器下载路径与cmd路径不在同个地方)
此处解决报错“ImportError: No module named ‘exceptions’”参考文档:
参考四:https://blog.csdn.net/print_lucien/article/details/105840951
参考五:https://blog.csdn.net/jiangjieqazwsx/article/details/80326214

用pip安装下来如果你不清楚下载后来路径肿么办,或者不太熟悉pip m命令可以参考这几篇文章

注意:要先用pip uninstall python-docx把原来的包删掉如果原来有的话

pip install 包名 -t 路径

参考这张图片处理的效果

参考六:https://blog.csdn.net/huijiaaa1/article/details/80616842
参考七:https://blog.csdn.net/weixin_45932759/article/details/105358175?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi洛一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值