对象方法简介
在Python中,使用 python-docx
库来处理Word文档,可以使用一系列的对象和方法来创建、编辑和操作文档。以下是对这些对象和一些关键方法的总结:
- Document:
add_heading(text, level)
:添加一个标题,其中text
是标题文本,level
是标题级别(1-9)。- 创建一个空文档或加载一个已存在的文档。
add_paragraph(text)
:添加一个段落,其中text
是段落文本。add_picture(path, width=None, height=None, start=None)
:添加一个图片,其中path
是图片的路径,width
和height
是可选的图片大小。save(filename)
:保存文档到文件,其中filename
是保存的文件名。
- Paragraph:
- 代表文档中的一个段落。
style
:段落的样式。alignment
:段落的对齐方式。text
:段落的文本内容。runs
:段落中的文本运行列表,每个运行可以有不同的样式或属性。
- Run:
- 代表段落中的一个文本运行。
text
:运行的文本内容。font
:运行的字体样式。bold
:是否加粗。italic
:是否斜体。underline
:下划线样式。color
:文本颜色。size
:字体大小。
- Font:
- 代表字体样式。
name
:字体名称。size
:字体大小。bold
:是否加粗。italic
:是否斜体。underline
:下划线样式。color
:文本颜色。
- Table:
- 代表表格。
add_row()
:添加一个新行。cells
:表格的单元格列表。cell
:根据行和列索引获取单元格。rows
:表格的行列表。row
:根据行索引获取行。columns
:表格的列列表。column
:根据列索引获取列。
- Cell:
- 代表表格中的一个单元格。
paragraphs
:单元格中的段落列表。add_paragraph(text)
:在单元格中添加一个段落。merge()
:合并单元格。merge_right()
:向右合并单元格。merge_down()
:向下合并单元格。
- Part:
- 代表文档的一部分,如样式、内容等。
get_style_id(style_or_name, style_type)
:根据样式名称或ID获取样式ID。add_style(name, style_type)
:添加一个新样式。
- Styles:
- 代表文档中的样式集合。
add_style(name, style_type)
:添加一个新样式。get_style_id(style_or_name, style_type)
:根据样式名称或ID获取样式ID。
- TableStyle:
- 代表表格样式。
name
:样式名称。table
:关联的表格。alignment
:对齐方式。border
:边框样式。cell_margins
:单元格边距。table_margins
:表格边距。background
:背景色。
这些对象和方法提供了足够的灵活性来创建和编辑Word文档。您可以根据需要组合和使用它们来创建复杂的文档结构。
使用教程
添加标题 设置段落
添加标题,设置段落行间距、缩进、对齐方式等
from docx import Document #用来建立一个word对象
from docx.shared import Pt #用来设置字体的大小
from docx.enum.text import WD_ALIGN_PARAGRAPH #设置对其方式
from docx.shared import Inches
# 创建文档对象
doc = Document('测试.docx')
# 如果报错 KeyError: "no style with name 'Heading 1'" 那就打开这个文档,将这些标题样式使用一遍,或者新建
# doc.add_heading(text="这是标题", level=0) # 标题等级(level)默认是1,对应“标题1”,如果设置为0,对应“标题”
title1 = doc.add_heading(text="这是一级标题", level=1)
title1.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置为居中对齐
title1.paragraph_format.space_before = Pt(0) # 设置段前 0 磅
title1.paragraph_format.space_after = Pt(0) # 设置段后 0 磅
title1.paragraph_format.line_spacing = 1.5 # 设置行间距为 1.5
title1.paragraph_format.left_indent = Inches(4) # 设置左缩进 1英寸
title1.paragraph_format.right_indent = Inches(0) # 设置右缩进 0.5 英寸
doc.save('demo.docx')
添加标题 设置段落 设置字体格式
添加标题为空,然后使用run向标题里插入文字,既可以设置段落 也可以 设置字体格式
from docx import Document #用来建立一个word对象
from docx.shared import Pt #用来设置字体的大小
from docx.enum.text import WD_ALIGN_PARAGRAPH #设置对其方式
from docx.oxml.ns import qn #设置字体
from docx.shared import RGBColor #设置字体的颜色
# 添加一个三级标题,内容为空
para_heading = doc.add_heading('',level=3)
para_heading.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置为居中对齐
para_heading.paragraph_format.line_spacing = 1.5 # 设置行间距为 1.5
# 然后使用run模块对该标题添加文字,处理该文字的字体、大小、颜色等
run = para_heading.add_run(u"前言")
run.font.name = u'宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') # 设置为宋体,和上边的一起使用
run.font.size = Pt(12) # 设置1级标题文字的大小为“小四” 为12磅
run.font.color.rgb = RGBColor(255,0,0) # 设置颜色为红色
doc.save('demo.docx')
全局正文和标题的格式设置
以上方式都是对与单独标题和段落设置的
下面是设置全局的 正文和标题 的 字体和段落格式
from docx import Document #用来建立一个word对象
from docx.shared import Pt #用来设置字体的大小
from docx.enum.text import WD_ALIGN_PARAGRAPH #设置对其方式
from docx.oxml.ns import qn #设置字体
from docx.shared import RGBColor #设置字体的颜色
# 设置全局的 正文和标题 的 字体和段落格式
doc.styles["Normal"].font.name = u"宋体" # 设置全局正文字体
doc.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
doc.styles["Normal"].font.size = Pt(29) # 设置正文全局大小为29
doc.styles["Normal"].font.color.rgb = RGBColor(255, 0, 0) # 设置正文全局颜色为红色
doc.styles["Heading 2"].font.size = Pt(29) # 设置全局二级标题的字体大小为29
doc.styles["Heading 2"].font.name = u'微软雅黑' # 设置全局的二级标题的字体
doc.styles["Heading 2"]._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
doc.styles["Heading 2"].font.color.rgb = RGBColor(100, 0, 0) # 设置二级标题全局颜色
# 添加正文
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置为居中对齐
r = p.add_run("测试正文样式") # 这个段落使用的是Normal的样式
# 添加标题
para_heading = doc.add_heading('',level=2) # 添加一个二级标题,标题也相当于一个段落
run = para_heading.add_run(u"测试标题样式") # 这个使用的是"Heading 2" 的样式
doc.save('demo.docx')
插入段落
from docx import Document #用来建立一个word对象
# 创建文档对象
doc = Document('测试.docx')
paragraph1 = doc.add_paragraph("这是第1个段落")
paragraph2 = doc.add_paragraph("这是第2个段落")
# 在paragraph2这个段落的前面插入一个段落
paragraph2.insert_paragraph_before("额外插入的段落文字")
doc.save("demo.docx")
读取打印所有内容
# 创建文档对象
doc = Document('测试.docx')
# 遍历文档的每一个段落
for para in doc.paragraphs:
print(para.text)
评论区