用python-docx库创建编辑word文档

采用空白模板新建word文档的话,运行以下语句

document = Document()

document.styles['Heading 1'].font.size=Pt(14)  #设置一级标题的字体大小
document.styles['Heading 1'].font.color.rgb=RGBColor(0,0,0)  #设置一级标题的字体颜色
document.styles['Heading 1'].font.name=u'Arial'  #此句经测试无效
document.styles['Heading 1']._element.rPr.rFonts.set(qn('w:asciiTheme'), u'宋体')#此句经测试无效

document.styles['Normal'].font.name=u'Times New Roman'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

document.add_heading('算法测试报告', 0)     #设置全文标题
Datetime=datetime.datetime.now().strftime('%Y-%m-%d  %H:%M:%S')
Fp = document.add_paragraph('测试时间:') #添加正文段落
Fp.add_run(Datetime)                                     #为段落增加内容
document.add_heading('被测对象name', level=1)#添加以及标题

不过测试发现,正文格式‘normal’的字体格式等的可以修改成功,一级标题‘Heading 1’的格式智能修改颜色、大小,字体修改语句无效,查询StackOverflow后能找到类似问题,但无法复现其解决方案。
对于格式设置问题,最方便的还是使用模板文档新建word,模板文档就是普通的docx文档,手动设置好其中各级标题和正文的样式,则新建的文档中样式便会与模板保持一致。

document = Document("my-starting-document.docx")   #制作模板文档并导入,新文档中各级标题格式会与模板保持一致
document._body.clear_content()

第二行是为了删除word中第一个空白行,使用模块建立新文件,会发现新文件中存在一个空白行,在正文输入前添加此语句可解决此问题。

你可能感兴趣的:(用python-docx库创建编辑word文档)