注册 登录

清河洛

python中使用python-docx操作word文档

qingheluo2022-09-02清河洛1240
python-docx是用于创建、修改Word的一个库,提供全套的Word操作,是常用的Word工具python-docx中的常见概念Document:Word文档对象,Document是独立的,打开不同的Word文档,就会有不同的Document对象,相互之间没有影响Paragraph:段落,一个Word文档由多个段落组成,当在文档中输入一个回车键,就会成为新的段落,输入shift+回车,不会分段Run:节段,每个段落由多个节段组成,一个段落中具有相同样式的连续文本,组成一个节段,一个段落对象有个Run列表安装:pip install python-docx引入:import docx...

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)

如果提供了docx文档(可以是一个路径字符串或类似文件的对象)会读取并返回该文档对象
如果未提供docx文档,那么会返回默认的空白文档

Doeument文档对象的常用方法

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=&#39;&#39;, 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:获取或设置列宽


网址导航