python中使用python-docx操作word文档
python-docx是用于创建、修改Word的一个库,提供全套的Word操作,是常用的Word工具
python-docx中的常见概念
Document:Word文档对象,Document是独立的,打开不同的Word文档,就会有不同的Document对象,相互之间没有影响Paragraph:段落,一个Word文档由多个段落组成,当在文档中输入一个回车键,就会成为新的段落,输入shift+回车,不会分段
Run:节段,每个段落由多个节段组成,一个段落中具有相同样式的连续文本,组成一个节段,一个段落对象有个Run列表
安装:pip install python-docx
引入:import docx(注意引入的是包名是docx,没有"python-"前缀)
长度和颜色
位于docx.shared下设置并获取一个长度对象
Inches(inches):英寸 Cm(cm):厘米 Mm(mm):毫米 Pt(points):磅设置并获取一个颜色对象
RGBColor(r, g, b) rgb是0-255范围内的整数 可以使用十六进制整数表示法(0xff, 0x99, 0xcc) from_string(rgb_hex_str) 根据一个十六进制颜色字符串返回颜色对象("3C2F80")
创建Doeument文档对象
document = docx.Doeument(docx_file = None)Doeument文档对象的常用方法如果提供了docx文档(可以是一个路径字符串或类似文件的对象)会读取并返回该文档对象
如果未提供docx文档,那么会返回默认的空白文档
add_heading(text=u'', level=1):在文档末尾添加一个标题并返回该段落对象,level可选值0-9,表示不同级别的标题 add_page_break():添加一个分页符并返会新页上的段落对象 add_paragraph(text=u'', style=None):在文档末尾添加一个段落并返回该段落对象 add_picture(image_path_or_stream, width=None, height=None) 在文档末尾添加一个图片,不指定宽高会使用图片原始大小,仅指定其中一个会保持宽高比进行缩放 add_picture('image.png', width=Cm(10)),表示图片宽度10厘米,Inches(1.0)表示1英寸 add_table(rows, cols, style=None):在文档末尾添加一个制定行和列的表格 save(path_or_stream):将此文档保存到path_or_stream,该数据库可以是文件系统位置的路径(字符串)或类似文件的对象Doeument文档对象的属性
core_properties:一个CoreProperties对象,提供对此文档的核心属性的读/写访问权限 通过该对象的属性读取或设置文档属性 说明中的内容: title:标题、subject:主体、keywords:标记、category:类别、comments:备注 来源中的内容: author:作者 last_modified_by:最后一次保存者 revision:修订号,int version:版本号 created:文档初始创建时间,datetime modified:最后一次保存的日期datetime last_printed:最后一次打印的时间datetime、 内容中的内容: content_status:内容状态 language:语言 inline_shapes:一个InlineShapes对象,用于访问本文档中的内联形状 paragraphs:返回文档中的所有段落实例列表,按文档顺序排列 styles:一个Styles对象,用于访问此文档中的样式 tables:与文档中的表对应的表实例列表,按文档顺序排列 此列表中仅显示出现在文档顶层的表格。嵌套在表格单元格内的表格不显示
段落对象的方法和属性
add_run(text=None, style=None):在段落末端添加一个节段并返回该节段实例对象clear():删除该段落的所有内容后,返回该段落对象
insert_paragraph_before(text=None, style=None):在段落之前插入一个新的段落并返回新增的段落对象
paragraph_format:返回一个ParagraphFormat对象,可以对此段落格式进行获取或修改(如行距和缩进)alignment:设定段落的对齐方式,通过WD_PARAGRAPH_ALIGNMENT枚举设置样式 别名WD_ALIGN_PARAGRAPH,所属模块docx.enum.text LEFT:左对齐 CENTER:居中对齐。 RIGHT:右对齐。 JUSTIFY:完全合理 DISTRIBUTE:段落字符被分布以填充段落的整个宽度 JUSTIFY_MED:以中等字符压缩比调整 JUSTIFY_HI:具有高字符压缩比 JUSTIFY_LOW:以较低的字符压缩比进行调整 压缩比影响换行,越高压缩比文本越早的换行 示例:paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER first_line_indent:首行缩进值,正值第一行缩进,负值产生挂起 keep_together:一个段落是否应保持“完整”(不跨越页面边界) keep_with_next:一个段落是否和下一个段落保持在同一页上 line_spacing:设定行高 space_after:段后间隔 space_before:段前间隔
runs:返回段落中所有的run实例
style:返回_ParagraphStyle对象,用于读取和修改分配给此段落的样式
text:获取段落的纯文本字符串
节段对象的方法和属性
add_picture(image_path_or_stream, width=None, height=None):添加图片并返回InlineShape对象
add_tab():添加一个制表符
add_text(text):在节段后添加一个字符串并返回新添加的节段对象
clear():删除所有内容后返回对此节段的引用,保留所有格式font:获取Font对象,字符格式属性的访问和修改
text:返回字节中的文本内容字符串
bold/italic/underline:bool值,文本是否以粗体/斜体/下划线显示
style:获取该阶段的样式对象,设置为None可以删除所有样式
Font对象的属性
name:设定文本的字体名称
color:文本的颜色,职位一个颜色对象
size:字体的大小,英制公制单位(EMU)表示字体高度font.size = docx.shared.Pt(24) font.size // 304800 font.size.pt // 24.0
snap_to_grid:是否对齐网格
all_caps/small_caps:文本中小写字母是否转换为大写字母,small_caps转换后字号会小一些
hidden:是否隐藏文本
no_proof:是否禁止拼音错误检测
rtl:文本使得否具有从右到左的特征显示形式(值为bool值)
bold(粗体)、italic(斜体)、underline(下划线)、strike(删除线)、double_strike(双删除线)、emboss(浮雕)、imprint(看起来像是按到了页面中)、outline(1像素边框)、shadow(阴影)、subscript(下标)、superscript(上标)
Table对象的方法和属性
add_column(width):新添加指定宽度的列最右侧并返回该列的列对象(_Column)
add_row():新添加一行到最底部并返回该行的行对象(_Row)
cell(row_idx, col_idx):根据索引返回对应的单元格对象(_Cell),(0,0)表示左上角单元格
column_cells(column_idx):获取指定索引的列的所有单元格对象
row_cells(row_idx):获取指定索引的行的所有单元格对象columns:获取表格中所有列对象
rows:获取表格中所有行对象
style:获取表格的样式对象
autofit:是否自动调整列宽
alignment:设定整个表格的对齐方式值为docx.enum.table.WD_TABLE_ALIGNMENT的枚举成员 LEFT(左对齐)、CENTER(居中对齐)、RIGHT(右对齐)
table_direction:设定表格的单元格排序方式
值为docx.enum.table.WD_TABLE_DIRECTION的枚举成员 LTR:表或行的第一列位于最左边的位置 RTL:表或行的第一列位于最右边的位置</pre><h2>单元格对象的操作</h2><pre>add_paragraph(text='', style=None):将指定文本添加到单元格末尾并返回该文本的段落对象
add_table(rows, cols):在单元个中添加一个指定行和列的表格并返回该表格对象
merge(other_cell):该单元格和指定单元格之间单元格个合并并返回该合并单元个对象
paragraphs:只读属性,获取单元格中段落列表
tables:只读属性,获取单元格中表格列表
text:获取此单元格的全部内容并作为字符串返回
vertical_alignment:单元格内内容的垂直方向对齐方式值为docx.enum.table.WD_ALIGN_VERTICAL的枚举成员 TOP(上对齐)、CENTER(中对齐)、BOTTOM(下对齐)
width:单元格的宽度
行对象
cells:获取行中所有的单元格个对象
height:获取或设置行高
height_rule:设置行高的设置规则值为docx.enum.table.WD_ROW_HEIGHT_RULE的枚举成员 AUTO:调整行高以适应行中的最高值 AT_LEAST:行高至少是指定的最小值 EXACTLY:行高是一个精确的值</pre>
列对象
cells:获取列中所有的单元格个对象 width:获取或设置列宽