Python与Word

发布于:2023-04-27 ⋅ 阅读:(215) ⋅ 点赞:(0)

      今天是办公三件套中使用的较多的word文本,教程也是分为基本命令以及最后的编程实践,经过前面几天的学习我觉得最关键的还是要以掌握库中特殊对象的属性,各自的函数用法为主,我将选择一些我觉得常用的方法,模块记录下来。

基本知识

docx基本结构

Word文档结构分为:

  • 文档-Document
  • 段落-Paragraphy
  • 文字块-Run

      在 python-docx 中,run是最基本的单位,每个run对象内的文本样式都是一致的,也就是说,在从docx文件生成文档对象时, python-docx 会根据样式的变化来将文本切分为一个个的Run对象。
      总的来说:Paragrapha 对象标识段落(在输入文档,每一次回车产生新段落);Run 对象标识相同样式的文本延续。Document 对象包含一个 Paragrapha 对象的列表,Paragraph 对象包含一个 Run 对象的列表。
      创建完成文档的一般步骤为:

  1. 创建document对象doc_1=Document()
  2. 逐段添加段落:para_1=doc_1.add_paragraphy()
  3. 给段落添加文字:r_1=para_1.add_run()

字体设置

      字体设置分为所有的字体设置以及指定一些区域的字体设置

全局字体设置

      这里可以设置全局的字体,一般设置成正文字体
      首先需要更改font.name,还需要调用._element.rPr.rFonts的set()方法。

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

指定区域字体设置

      我觉得给出的两种方法中自定义函数的方法比较方便。可以积累下来作为一个模块使用

def font_setting(doc,text,font_cn):
	style_add = doc.styles.add_style(font_cn, WD_STYLE_TYPE.CHARACTER)
	style_add.font.name = font_cn
	doc.styles[font_cn]._element.rPr.rFonts.set(qn('w:eastAsia'), font_cn)
	par = doc.add_paragraph()
	text = par.add_run(text, style=font_cn)

      要注意的是本方法在添加文字块的同时设置了字体,所以有时还是有些限制的。

图片插入

      图片插入比较简单,比如插入一张截图

doc_1.add_picture('picture_test.jpg',width=Inches(1.0), height=Inches(1.0))

      该方法直接添加一张截图,通过width和height调节参数。图片会直接添加在末尾,注意好位置。

页眉页脚

      要使用节(section)中的页眉(header)和页脚(footer)对象来具体设置

header = document.sections[0].header # 获取第一个节的页眉
paragraph = header.paragraphs[0] # 获取页眉的第一个段落
paragraph.add_run('这是第一节的页眉') # 添加页面内容
footer = document.sections[0].footer # 获取第一个节的页脚
paragraph = footer.paragraphs[0] # 获取页脚的第一个段落
paragraph.add_run('这是第一节的页脚') # 添加页脚内容

      方法如上,需要注意的是一般页眉和页脚都是一脉相承的格式,如果想有变化的话需修改header.is_linked_to_previous的属性或者也可以将footer.is_linked_to_previous的属性设置为False

编程实践

      这次的题目综合了excel的知识,从excel中提取信息然后批量生成邀请函,综合性和难度都上来了,最近准备热工控制考试,无暇顾及,很遗憾不能按时完成该部分内容


网站公告

今日签到

点亮在社区的每一天
去签到