文章来源:https://blog.csdn.net/smile445/article/details/90402394?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

文章目录

  • 文件类
  • 表格类
  • 一些其他小tips
    • 字体设置
    • 调整文本位置格式
      • 居中
      • 左缩进
      • 首行缩进
      • 行间距
      • 分页格式

        文件类

        创建文件实例

        1. docx.Document(docx=None)
        2. 1
        返回从docx创建的文件对象,参数docx 可以是.docx文件的存储路径,或者是一个 file-like对象,如果参数docx 缺失或None,就会加载内置默认的文件模板。

        文件实例中的方法及属性

        add_heading

        1. add_heading(text=u' ',level=1)
        2. 1
        返回一个创建再文件实例末尾的标题,标题内容是参数text, 内容格式由参数level规定,若level=0则设置为文章标题,level=1或缺省,则设置为1级标题,否则设置为level级标题;

        add_page_break

        1. add_page_break() #增加分页符
        2. 1

        add_paragraph

        1. add_paragraph(text=u ' ', style=None)
        2. 1
        返回一个再文件实例末尾增加的段落,段落内容由参数text指定,段落格式由参数 style 指定。参数 text 可以包含制表符 \t, 制表符会转换为合适的 xml 格式; 也可以包含换行符 \n,回车符 \r,这两个符号都会转换为换行;

        add_picture

        1. add_picture(image_path_or_stream, width=None, height=None)
        2. 1
        返回一个创建在文件实例末尾的图片形状。参数image_path_or_stream指定图片的路径。参数widthheight指定图片的宽度和高度,若两个参数均缺省,则加载的图片为原始大小,若两个参数只指定一个,则根据指定的参数计算比例系数,再按此比例系数计算另一个参数的大小;

        add_section

        1. add_section(start_type=2)
        2. 1
        返回创建再文件实例末尾的一节。可选参数start_type必须是枚举类型WD_SECTION_START中的元素。如果不指定,默认是WD_SECTION.NEW_PAGE

        add_table

        1. add_table(rows,cols,style=None)
        2. 1
        在文件实例中创建一个rows行,cols列的表格实例。表格的格式参数由style指定,参数style必须是段落格式对象(paragraph style object)或者段落格式名字(paragraph style name),如果style=None则使用文件实例中的默认表格格式。
        一些详细用法见第二节。

        core_properties

        可读可写,文件实例的核心属性

        inline_shapes

        访问文件实例中的inline_shapes形状

        paragraphs

        返回文件实例中的段落实例列表,按照在文件实例中的出现顺序排列。注意,含有修订标志的段落实例不会出现在该列表中。

        save

        保存文件实例到save中的指定的路径。

        sections

        访问文件实例中的每一节。

        settings

        访问文件实例的设置

        styles

        访问文件实例中的格式

        tables

        返回文件实例中表格实例的列表。注意该列表只包含出现在文件实例顶层的表格实例,若是嵌套在表格中某一格的表格,则不会出现在该列表中。

        表格类

        表格类table objects

        1. class docx.table.Table(tbl, parent)
        2. 1
        使用Document类中的add_table()方法创建表格实例。

        表格类属性及方法

        1. add_columns(width)
        2. 1
        返回在一个建立在该表格最右端的列实例,参数 width 指定宽度。
        1. add_row()
        2. 1
        返回一个建立在该表格最下方的行实例。
        1. alihnment
        2. 1
        用来指定表格在页边距的位置,取值枚举类型WD_TABLE_ALIGNMENT的成员。如果不指定,则取值none,此时汇集成当前文件实例格式中的值。
        1. autofit
        2. 1
        取值为 True 时,列宽会根据表格内容进行自动调整,取值为False时,列宽固定,如果该表格列宽的总和超过了页面宽度,上述两种取值时候,列宽都会被调整。
        1. cell(row_idx, col_idx)
        2. 1
        返回在row_idx 行,col_idx列的单元格实例(cell )。(0, 0) 是表格左上端的单元格。
        1. column_cells(columns_idx)
        2. 1
        返回表格第column_idx行的单元格实例序列。
        1. columns
        2. 1
        返回该表格中的列实例的序列
        1. row_cells(row_idx)
        2. 1

        返回该表格中的行实例的序列。

        1. style
        2. 1
        可读可写,该表格使用的格式_TableStyle实例。如果表格没有直接应用格式,则返回文件的默认格式(通常为 normal)。取值 None 则移除该文件的直接应用格式。

        单元格类 _Cell objects的属性及方法

        1. add_paragraph(text=u' ', style=None)
        2. 1
        返回建立在单元格内容后面的段落。如果出现这个方法,则在单次运行中,添加本文到段落中。参数 style 指定段落格式,如果参数 style 被指定,则应用该格式;如果没有被指定,则应用 Normal 格式。
        1. add_table(rows, cols)
        2. 1
        返回一个建立在单元格内容后的表格实例,有 rows行,cols 列。一个空的段落被添加在表格后面,因为 Word 要求每个单元格中最后的元素时段落元素。
        1. merge(other_cell)
        2. 1
        返回一个合并的单元格,该单元格是以将该单元格和参数 other_cell 指定单元格的作为对角线的矩形区域创建的。如果单元格没有定义矩形区域,则会引发异常。
        1. paragraph
        2. 1
        该单元格中的段落列表。列表的顺序按照这些表格出现的顺序。
        1. tables
        2. 1
        该单元格中的表格列表,列表的顺序按照这些表格出现的顺序。
        1. text
        2. 1
        返回文本字符串格式的单元格的所有内容。给这个字符串赋值,则会用福德值替换单元格中的所有内容。

        行 类_Row objects的属性及方法

        1. cells #表格的行,返回这一行单元格的行实例列表
        2. height #返回单元格高度的 length 实例。如果高度没有设定,则返回None.
        3. height_rule #返回单元格的高度规则,取值为枚举类型 WD_ROW_HEIGHT_RULE 的成员。如果没有显示设定高度规则,则返回None.
        4. table 返回对当前行所在单元格的引用。
        5. 1
        6. 2
        7. 3
        8. 4

        列 类_Column objects的属性及方法

        1. cells #这一列中所有单元格实例列表
        2. table #返回对当前列所在单元格的引用
        3. width #返回用EMU格式表示这一列的宽度
        4. 1
        5. 2
        6. 3

        多行/多列 类_Rows objects的属性及方法

        该表格中行实例 / 列实例的序列,支持len(),支持迭代,下标的访问方式,以及切片。
        1. table #返回对当前行实例 or 列实例集合所在单元格的引用。
        2. 1

        一些其他小tips

        字体设置

        利用python-docx生成段落时,在未设置中文字体的时候,生成的文档虽然可以显示中文,但大小不一,不美观,于是需要对字体进行指定
        1. #依赖的一些包
        2. from docx import Document
        3. from docx.shared import Pt, Inches
        4. from docx.oxml.ns import qn
        5. 1
        6. 2
        7. 3
        8. 4

        修改正文中的中文字体类型

        示例代码,全局设置
        1. document=Document()
        2. document.styles['Normal'].font.name=u'宋体'
        3. document.styles['Normal']._element.rPr.rFont.set(qn('w:eastAsia'),u'宋体'
        4. 1
        5. 2
        6. 3

        修改标题的字体类型

        以1级标题为例
        1. run=document.add_heading(' ',level=1).add_run(u'应用场景示例:' #应用场景示例标题
        2. run.font.name=u'黑体'
        3. run._element.rPr.rFont.set(qn('w:eastAsia'),u'黑体'
        4. 1
        5. 2
        6. 3

        字体格式(加粗、斜体、颜色等)

        1. p = document.add_paragraph()
        2. run = p.add_run('test typeface')
        3. run.font.bold = True #加粗
        4. run.font.italic = True #斜体
        5. run.font.underline = True #下划线
        6. run.underline=WD_UNDERLINE.DOT_DASH #返回WD_UNDERLINE中所有下划线格式
        7. ##字体颜色
        8. from docx.shared import RGBColor
        9. test=document.add_paragraph().add_run('color')
        10. font=test.font
        11. font.color.rgb=RGBColor(0x42, 0x24 , 0xE9)
        12. ##使用预设颜色
        13. from docx.enum.dml import MSO_THEME_COLOR
        14. font.color.theme_color=MSO_THEME_COLOE.ACCRNT_1
        15. 1
        16. 2
        17. 3
        18. 4
        19. 5
        20. 6
        21. 7
        22. 8
        23. 9
        24. 10
        25. 11
        26. 12
        27. 13
        28. 14
        29. 15
        30. 16

        调整文本位置格式

        居中

        1. from docx.enum.text import WD_ALIGN_PARAGRAPH
        2. document=Document('test.docx')
        3. paragraph=document.add_paragraph('123'
        4. paragraph.pargraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER
        5. ##这一步调整文件格式为居中
        6. document.save('test.docx')
        7. 1
        8. 2
        9. 3
        10. 4
        11. 5
        12. 6

        左缩进

        1. document=Document('text.docx')
        2. paragraph=document.add_paragraph('this is test for left_indent with inches.')
        3. paragraph_format=paragraph.paragraph_format
        4. paragraph_format.left_indent=Inches(0.3) #调整左缩进0.3英寸
        5. document.save('test.docx')
        6. 1
        7. 2
        8. 3
        9. 4
        10. 5

        首行缩进

        1. paragraph_format.first_line_indent=Inches(0.3)
        2. 1

        行间距

        1. paragraph_format.space_before=Pt(18) #上行间距
        2. paragraph_format.space_after=Pt(12) #下行间距
        3. paragraph_format.line_spacing=Pt(18) #行距
        4. 1
        5. 2
        6. 3

        分页格式

        1. paragraph_format.keep_together #紧跟上段
        2. paragraph_format.keep_with_next #若本页无法完全显示,另起一页
        3. paragraph_format.page_break_before #强制另起一页,分页
        4. 1
        5. 2
        6. 3