python-docx使用小结

麦叔 1年前 ⋅ 660 阅读

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

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指定图片的路径。参数widthheight指定图片的宽度和高度,若两个参数均缺省,则加载的图片为原始大小,若两个参数只指定一个,则根据指定的参数计算比例系数,再按此比例系数计算另一个参数的大小;

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
from docx.oxml.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
font.color.rgb=RGBColor(0x42, 0x24 , 0xE9)

##使用预设颜色
from docx.enum.dml import MSO_THEME_COLOR
font.color.theme_color=MSO_THEME_COLOE.ACCRNT_1

调整文本位置格式

居中

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')

左缩进

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   #强制另起一页,分页

全部评论: 0

    我有话说: