python-docx中⽂⽂档使⽤⼩结
⽂章⽬录
⽂件类
创建⽂件实例
docx.Document(docx=None)
返回从docx创建的⽂件对象,参数docx 可以是.docx⽂件的存储路径,或者是⼀个 file-like对象,如果参数docx 缺失或None,就会加载内置默认的⽂件模板。
⽂件实例中的⽅法及属性
add_heading
add_heading(text=u' ',level=1)
返回⼀个创建再⽂件实例末尾的标题,标题内容是参数text, 内容格式由参数level规定,若level=0则设置为⽂章标题,level=1或缺省,则设置为1级标题,否则设置为level级标题;
add_page_break
add_page_break()  #增加分页符
add_paragraph
python官方文档中文版add_paragraph(text=u ' ', style=None)
返回⼀个再⽂件实例末尾增加的段落,段落内容由参数text指定,段落格式由参数 style 指定。参数 text 可以包含制表符 \t, 制表符会转换为合适的 xml 格式; 也可以包含换⾏符 \n,回车符 \r,这两个符号都会转换为换⾏;
add_picture
add_picture(image_path_or_stream, width=None, height=None)
返回⼀个创建在⽂件实例末尾的图⽚形状。参数image_path_or_stream指定图⽚的路径。参数width、height指定图⽚的宽度和⾼度,若两个参数均缺省,则加载的图⽚为原始⼤⼩,若两个参数只指定⼀个,则根据指定的参数计算⽐例系数,再按此⽐例系数计算另⼀个参数的⼤⼩;
add_section
add_section(start_type=2)
返回创建再⽂件实例末尾的⼀节。可选参数start_type必须是枚举类型WD_SECTION_START中的元素。如果不指定,默认
是WD_SECTION.NEW_PAGE。
add_table
add_table(rows,cols,style=None)
在⽂件实例中创建⼀个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)
使⽤Document类中的add_table()⽅法创建表格实例。
表格类属性及⽅法
add_columns(width)
返回在⼀个建⽴在该表格最右端的列实例,参数 width 指定宽度。
add_row()
返回⼀个建⽴在该表格最下⽅的⾏实例。
alihnment
⽤来指定表格在页边距的位置,取值枚举类型WD_TABLE_ALIGNMENT的成员。如果不指定,则取值none,此时汇集成当前⽂件实例格式中的值。
autofit
取值为 True 时,列宽会根据表格内容进⾏⾃动调整,取值为False时,列宽固定,如果该表格列宽的总和超过了页⾯宽度,上述两种取值时候,列宽都会被调整。
cell(row_idx, col_idx)
返回在row_idx ⾏,col_idx列的单元格实例(cell )。(0, 0) 是表格左上端的单元格。
column_cells(columns_idx)
返回表格第column_idx⾏的单元格实例序列。
columns
返回该表格中的列实例的序列
row_cells(row_idx)
#返回该表格中的⾏实例的序列。
style
可读可写,该表格使⽤的格式_TableStyle实例。如果表格没有直接应⽤格式,则返回⽂件的默认格式(通常为 normal)。取值 None 则移除该⽂件的直接应⽤格式。
单元格类_Cell objects的属性及⽅法
add_paragraph(text=u' ', style=None)
返回建⽴在单元格内容后⾯的段落。如果出现这个⽅法,则在单次运⾏中,添加本⽂到段落中。参数 style 指定段落格式,如果参数 style 被指定,则应⽤该格式;如果没有被指定,则应⽤ Normal 格式。
add_table(rows, cols)
返回⼀个建⽴在单元格内容后的表格实例,有 rows⾏,cols 列。⼀个空的段落被添加在表格后⾯,因为 Word 要求每个单元格中最后的元素时段落元素。
merge(other_cell)
返回⼀个合并的单元格,该单元格是以将该单元格和参数 other_cell 指定单元格的作为对⾓线的矩形区域创建的。如果单元格没有定义矩形区域,则会引发异常。
paragraph
该单元格中的段落列表。列表的顺序按照这些表格出现的顺序。
tables
该单元格中的表格列表,列表的顺序按照这些表格出现的顺序。
text
返回⽂本字符串格式的单元格的所有内容。给这个字符串赋值,则会⽤福德值替换单元格中的所有内容。
⾏类_Row objects的属性及⽅法
cells      #表格的⾏,返回这⼀⾏单元格的⾏实例列表
height  #返回单元格⾼度的 length 实例。如果⾼度没有设定,则返回None.
height_rule  #返回单元格的⾼度规则,取值为枚举类型 WD_ROW_HEIGHT_RULE 的成员。如果没有显⽰设定⾼度规则,则返回None.
table 返回对当前⾏所在单元格的引⽤。
列类_Column objects的属性及⽅法
cells    #这⼀列中所有单元格实例列表
table    #返回对当前列所在单元格的引⽤
width    #返回⽤EMU格式表⽰这⼀列的宽度
多⾏/多列类_Rows objects的属性及⽅法
该表格中⾏实例 / 列实例的序列,⽀持len(),⽀持迭代,下标的访问⽅式,以及切⽚。
table    #返回对当前⾏实例 or 列实例集合所在单元格的引⽤。
⼀些其他⼩tips
字体设置
利⽤python-docx⽣成段落时,在未设置中⽂字体的时候,⽣成的⽂档虽然可以显⽰中⽂,但⼤⼩不⼀,不美观,于是需要对字体进⾏指定
#依赖的⼀些包
from docx import Document
from docx.shared import Pt, Inches
l.ns import qn
修改正⽂中的中⽂字体类型
⽰例代码,全局设置
document=Document()
document.styles['Normal'].font.name=u'宋体'
document.styles['Normal']._element.rPr.rFont.set(qn('w:eastAsia'),u'宋体')
修改标题的字体类型
以1级标题为例
run=document.add_heading(' ',level=1).add_run(u'应⽤场景⽰例:')  #应⽤场景⽰例标题
run.font.name=u'⿊体'
run._element.rPr.rFont.set(qn('w:eastAsia'),u'⿊体')
字体格式(加粗、斜体、颜⾊等)
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
##使⽤预设颜⾊
um.dml import MSO_THEME_COLOR
调整⽂本位置格式
居中
um.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')
左缩进
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')
⾸⾏缩进
paragraph_format.first_line_indent=Inches(0.3)
⾏间距
paragraph_format.space_before=Pt(18)    #上⾏间距
paragraph_format.space_after=Pt(12)    #下⾏间距
paragraph_format.line_spacing=Pt(18)  #⾏距
分页格式
paragraph_format.keep_together    #紧跟上段
paragraph_format.keep_with_next  #若本页⽆法完全显⽰,另起⼀页paragraph_format.page_break_before  #强制另起⼀页,分页