文件类
创建文件实例
docx.Document(docx=None)1
返回从docx创建的文件对象,参数docx 可以是.docx文件的存储路径,或者是一个 file-like对象,如果参数docx 缺失或None,就会加载内置默认的文件模板。
文件实例中的方法及属性
add_heading
add_heading(text=u' ',level=1)1
返回一个创建再文件实例末尾的标题,标题内容是参数text, 内容格式由参数level规定,若level=0则设置为文章标题,level=1或缺省,则设置为1级标题,否则设置为level级标题;
add_page_break
add_page_break() #增加分页符1
add_paragraph
add_paragraph(text=u ' ', style=None)1
返回一个再文件实例末尾增加的段落,段落内容由参数text指定,段落格式由参数 style 指定。参数 text 可以包含制表符 \t, 制表符会转换为合适的 xml 格式; 也可以包含换行符 \n,回车符 \r,这两个符号都会转换为换行;
add_picture
add_picture(image_path_or_stream, width=None, height=None)1
返回一个创建在文件实例末尾的图片形状。参数image_path_or_stream
指定图片的路径。参数width
、height
指定图片的宽度和高度,若两个参数均缺省,则加载的图片为原始大小,若两个参数只指定一个,则根据指定的参数计算比例系数,再按此比例系数计算另一个参数的大小;
add_section
add_section(start_type=2)1
返回创建再文件实例末尾的一节。可选参数start_type
必须是枚举类型WD_SECTION_START
中的元素。如果不指定,默认是WD_SECTION.NEW_PAGE
。
add_table
add_table(rows,cols,style=None)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
class docx.table.Table(tbl, parent)1
使用Document
类中的add_table()
方法创建表格实例。
表格类属性及方法
add_columns(width)1
返回在一个建立在该表格最右端的列实例,参数 width 指定宽度。
add_row()1
返回一个建立在该表格最下方的行实例。
alihnment1
用来指定表格在页边距的位置,取值枚举类型WD_TABLE_ALIGNMENT
的成员。如果不指定,则取值none,此时汇集成当前文件实例格式中的值。
autofit1
取值为 True 时,列宽会根据表格内容进行自动调整,取值为False时,列宽固定,如果该表格列宽的总和超过了页面宽度,上述两种取值时候,列宽都会被调整。
cell(row_idx, col_idx)1
返回在row_idx 行,col_idx列的单元格实例(cell )。(0, 0) 是表格左上端的单元格。
column_cells(columns_idx)1
返回表格第column_idx行的单元格实例序列。
columns1
返回该表格中的列实例的序列
row_cells(row_idx)1
#返回该表格中的行实例的序列。
style1
可读可写,该表格使用的格式_TableStyle
实例。如果表格没有直接应用格式,则返回文件的默认格式(通常为 normal)。取值 None 则移除该文件的直接应用格式。
单元格类 _Cell objects
的属性及方法
add_paragraph(text=u' ', style=None)1
返回建立在单元格内容后面的段落。如果出现这个方法,则在单次运行中,添加本文到段落中。参数 style 指定段落格式,如果参数 style 被指定,则应用该格式;如果没有被指定,则应用 Normal 格式。
add_table(rows, cols)1
返回一个建立在单元格内容后的表格实例,有 rows行,cols 列。一个空的段落被添加在表格后面,因为 Word 要求每个单元格中最后的元素时段落元素。
merge(other_cell)1
返回一个合并的单元格,该单元格是以将该单元格和参数 other_cell 指定单元格的作为对角线的矩形区域创建的。如果单元格没有定义矩形区域,则会引发异常。
paragraph1
该单元格中的段落列表。列表的顺序按照这些表格出现的顺序。
tables1
该单元格中的表格列表,列表的顺序按照这些表格出现的顺序。
text1
返回文本字符串格式的单元格的所有内容。给这个字符串赋值,则会用福德值替换单元格中的所有内容。
行 类_Row objects
的属性及方法
cells #表格的行,返回这一行单元格的行实例列表
height #返回单元格高度的 length 实例。如果高度没有设定,则返回None.
height_rule #返回单元格的高度规则,取值为枚举类型 WD_ROW_HEIGHT_RULE 的成员。如果没有显示设定高度规则,则返回None.
table 返回对当前行所在单元格的引用。1234
列 类_Column objects
的属性及方法
width #返回用EMU格式表示这一列的宽度123
多行/多列 类_Rows objects
的属性及方法
该表格中行实例 / 列实例的序列,支持len(),支持迭代,下标的访问方式,以及切片。
table #返回对当前行实例 or 列实例集合所在单元格的引用。1
一些其他小tips
字体设置
利用python-docx生成段落时,在未设置中文字体的时候,生成的文档虽然可以显示中文,但大小不一,不美观,于是需要对字体进行指定
#依赖的一些包
from docx import Document
from docx.shared import Pt, Inches
from docx.oxml.ns import qn1234
修改正文中的中文字体类型
示例代码,全局设置
document=Document()
document.styles['Normal'].font.name=u'宋体'
document.styles['Normal']._element.rPr.rFont.set(qn('w:eastAsia'),u'宋体')123
修改标题的字体类型
以1级标题为例
run=document.add_heading(' ',level=1).add_run(u'应用场景示例:') #应用场景示例标题
run.font.name=u'黑体'
run._element.rPr.rFont.set(qn('w:eastAsia'),u'黑体')123
字体格式(加粗、斜体、颜色等)
p = document.add_paragraph()
run = p.add_run('test typeface')
run.font.bold = True #加粗
run.font.italic = True #斜体
run.font.underline = True #下划线
run.underline=WD_UNDERLINE.DOT_DASH #返回WD_UNDERLINE中所有下划线格式
##字体颜色
from docx.shared import RGBColor
test=document.add_paragraph().add_run('color')
font=test.font
font.color.rgb=RGBColor(0x42, 0x24 , 0xE9)
##使用预设颜色
from docx.enum.dml import MSO_THEME_COLOR
font.color.theme_color=MSO_THEME_COLOE.ACCRNT_112345678910111213141516
调整文本位置格式
居中
from docx.enum.text import WD_ALIGN_PARAGRAPH
document=Document('test.docx')
paragraph=document.add_paragraph('123')
paragraph.pargraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER
##这一步调整文件格式为居中
document.save('test.docx')123456
左缩进
document=Document('text.docx')
paragraph=document.add_paragraph('this is test for left_indent with inches.')
paragraph_format=paragraph.paragraph_format
paragraph_format.left_indent=Inches(0.3) #调整左缩进0.3英寸
document.save('test.docx')12345
首行缩进
paragraph_format.first_line_indent=Inches(0.3)1
行间距
paragraph_format.space_before=Pt(18) #上行间距
paragraph_format.space_after=Pt(12) #下行间距
paragraph_format.line_spacing=Pt(18) #行距123
分页格式
paragraph_format.keep_together #紧跟上段
paragraph_format.keep_with_next #若本页无法完全显示,另起一页
paragraph_format.page_break_before #强制另起一页,分页