自动化之Word操作

利用docx库进行Word的自动化操作。

实战操作演示

实现论文字体格式的控制(懒得自己手动改了属于是QAQ)

  • 通过docx库实例化document对象,获取文本
  • 通过font.name、font.size等属性,设置文本的字体与字号等属性
  1. 生成文档

    1
    2
    file_name='xxx.docx'
    doc=Doc(file_name)
  2. 添加标题

    1
    doc.AddParaText(title_text,22,18,0,1,'隶书')
  3. 添加摘要和关键字

    1
    2
    abstr=doc.AddParaText('摘 要:',12,18,0,0,'宋体')
    doc.AddRunText(abstr,abstract_text)
    1
    2
    kw=doc.AddParaText('关键字:',12,18,0,0,'宋体')
    doc.AddRunText(kw,keywords_text)
  4. 添加正文

    分情况选择各种字号

    1
    2
    3
    4
    doc.AddParaText(f'{h.text()}',16,18,0,0,'宋体')#16-三号
    doc.AddParaText(f'{h.text()}',14,18,0,0,'宋体')#14-四号
    doc.AddParaText(f'{h.text()}',12,18,0,0,'宋体')#12-小四
    doc.AddParaText(f'{h.text()}',10.5,18,1,0,'宋体')#10.5-五号
  5. 添加参考文献

1
2
ref=doc.AddParaText('参考文献\n',16,18,0,0,'宋体')
doc.AddRunText(ref, reference_text,10.5)

合并docx文档

利用docxcompose.composer库,可以实现带格式以及图片的docx文档合并

1
2
3
4
5
6
7
8
from docxcompose.composer import Composer

def combine_word_documents(file_name1,file_name2):
file1 = Document(file_name1)
file2 = Document(file_name2)
composer = Composer(file1)
composer.append(file2)
composer.save("combined.docx")

关键函数

1
>from docx.oxml.ns import qn	# 注意中文字体格式需要qn进行设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 默认英文'Times New Roman',中文front_name设置
def AddParaText(self,text, size, space, thickness, position,front_name):
p = self.document.add_paragraph()
p.paragraph_format.line_spacing = Pt(20) # 行距20磅
# 0: 靠左;1: 居中
if position == 0:
p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
else :
p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
p.paragraph_format.space_before = Pt(space)
text = p.add_run(text)
# 0: 加粗;1: 不加粗
if thickness == 1:
text.bold = False
else:
text.bold = True
text.font.name = 'Times New Roman'
text.element.rPr.rFonts.set(qn('w:eastAsia'), front_name)
text.font.size = Pt(size)
self.document.save(self.file_name)
return p
1
2
3
4
5
6
def AddRunText(self,p,text,bond=False,size=12): # 默认12磅(小四号)
r=p.add_run(text)
r.font.name='Times New Roman'
r.font.size = Pt(size)
r.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
self.document.save(self.file_name)
不要打赏,只求关注呀QAQ