1. 基本概念:word文档(.docx文件)的三层结构:最高一层Document对象表示整个文档,Document对象包含一个paragraph
    对象的列表,表示文档中的段落(用户在word文档输入时,如果按下回车则表示新段落开始)。每个paragraph对象包含一个
    Run对象的列表。word文档中的文本不仅仅是字符串,还包含与之相关的字体、大小、颜色和其他样式信息。在word中,样式
    是这些属性的集合,一个Run对象是相同样式文本的延续,当文本样式发生改变时就需要一个新的Run对象。
  2. 读取Word文档:使用import docx导入docx模块实现对word文档的处理,调用docx.Document(‘doc文件名’)返回一个
    Document对象,例如doc=docx.Document(‘demo.docx’),Document对象的paragraphs属性是Paragraphs对象的列表,
    使用doc.paragraphs[0]取得文档段落1,Paragraphs对象具有text属性,包含段落中的纯文本字符串(没有样式信息)。每个
    Paragraph对象具有Runs属性,它是Run对象的列表,Run对象也具有text属性包含那个延续中的文本,使用以下语句可获得
    run对象为文本:doc.paragraphs[1].runs[3].text
  3. 从.docx中取得完整的文本,可以创建一个函数完成此功能,程序如下所示,调用getText()函数可直接得到word文档纯文本。
    import docx
    def getText(filename):
    doc = docx.Document(filename)
    fullText = []
    for para in doc.paragraphs:
    fullText.append(para.text)
    return ‘\n\n’.join(fullText)
  4. 设置paragraph对象和Runs对象的样式:word文档含有三种类型的样式:段落样式可应用于paragraph对象,字符样式可应用于
    Run对象,链接的样式可以应用于这两种对象,将paragraph对象和Run对象的style属性设置为一个字符串,从而设置样式,该
    字符串应该是一种样式的名称。如果 style 被设置为 None,就没有样式与 Paragraph 或 Run 对象关联。在设置style属性时,
    不要在样式名称中使用空格。如果Run对象应用链接的样式需需要在样式名称末尾加上‘Char’,例如Paragraph对象设置
    Quote链接的样式,应该使用paragraph.style=‘Quote’,但Run对象,应该使用run.style=‘QuoteChar’。
  5. Run属性:通过text属性,Run可以进一步设置样式,每个属性可以被设置为三个值:True(该属性总是启用,不论其他样式是
    否应用于该Run对象)、False(该属性总是禁用)、None(默认使用该Run被设置的任何属性)。
    Run对象的text属性:
    bold 文本以粗体出现
    italic 文本以斜体出现
    underline 文本带下划线
    strike 文本带删除线
    double_strike 文本带双删除线
    all_caps 文本以大写首字母出现
    small_caps 文本以大写首字母出现,小写字母小两个点
    shadow 文本带阴影
    outline 文本以轮廓线出现,而不是实心
    rtl 文本从右至左书写
    imprint 文本以刻入页面的方式出现
    emboss 文本以凸出页面的方式出现
    例如使用doc.paragraphs[1].runs[3].underline=True则使得该Run对象带上下划线。
  6. 写入Word文档:调用docx.Document()则创建一个新的空白的Word Document对象,Document对象的
    add_paragraph(‘段落文本’)方法可将一段新文本添加到文档末尾,并将返回添加的paragraph对象,即调用语句
    paraObj = doc.add_paragraph(‘This is a second paragraph.’),在添加完文本之后,向Document对象的save()方法传入文件
    名字符串,则将Document对象保存到文件。
    要在已有段落的末尾添加新文本,可调用paragraph对象的add_run()方法,向它传入一个字符串。例如:
    paraObj.add_run(’ This text is being added to the second paragraph.’)
    add_paragraph()和add_run()都接受可选的第二参数,表示paragraph或Run对象样式的字符串,例如:
    doc.add_paragraph(‘Hello world!’, ‘Title’)
  7. 添加标题:调用add_heading(‘参数一,标题文本字符串’, ‘参数二,0-4整数,表示不同标题层次’)将添加一个标题段落,
    并使用一种标题样式,例如:paraObj=doc.add_heading(‘Header 0’, 4)。该语句返回一个paragraph对象。
  8. 添加换行符和换页符:添加换行符(而不是开始一个新的段落),可以在Run对象上调用add_break()方法,换行符将出现在它
    后面,例如doc.paragraphs[1].runs[3].add_break(),如果希望添加换页符可将docx.text.run.WD_BREAK.PAGE作为唯一参数
    传递给add_break(),例如 doc.paragraphs[0].runs[0].add_break(docx.text.run.WD_BREAK.PAGE)
  9. 添加图像:对Document对象调用add_picture()方法让你在文档末尾添加图像。例如调用:
    doc.add_picture(‘zophie.png’, width=docx.shared.Inches(1),height=docx.shared.Cm(4))可实现在文档末尾添加zophie.png
    图像,该方法的第一个参数是一个字符串,表示图像的文件名。可选的 width 和 height 关键字参数,将设置该图像在文档中的
    宽度和高度。如果省略,宽度和高度将采用默认值,在指定 width 和 height 关键字参数时,可以使用 docx.shared.Inches()和
    docx.shared.Cm()函数。

更多推荐

使用python-docx模块处理word文档通用方法与技巧