python-docx 节操作
在 Word 文档中,节(Section) 是控制页面布局的最小单元,允许文档中存在不同的页边距、纸张大小或方向。
一、节的本质与作用
节是文档中具有统一页面设置的连续区域。一个文档可以包含多个节,每个节可独立设置:
- 页边距(上/下/左/右)
- 纸张大小与方向(横向/纵向)
- 页眉页脚样式
- 页码格式与起始位置
默认情况下,新建文档仅包含 1 个节,所有内容共享相同的页面设置。当需要在文档中插入不同布局(如部分页面横向排版)时,需添加新节。
二、节的基本操作
1. 访问文档中的节
通过 Document.sections 属性获取文档中所有节(返回列表,按顺序排列):
from docx import Documentdoc = Document()
sections = doc.sections # 节列表
# 访问第一个节(默认节)
first_section = sections[0]
2. 添加新节
使用 add_section() 方法在文档末尾添加新节,新节默认继承前一节的页面设置:
# 在文档末尾添加新节
new_section = doc.add_section()
注意:新节的内容从添加位置开始,后续新增的内容(段落、表格等)会自动属于当前最后一个节。
三、页面设置
每个节的页面设置通过节对象的属性控制,以下是常用配置:
1. 页边距设置
控制内容与纸张边缘的距离,支持英寸(Inches)或厘米(Cm)单位:
from docx.shared import Inches, Cm
section = doc.sections[0]# 上/下/左/右页边距
section.top_margin = Inches(1.0) # 上页边距 1 英寸
section.bottom_margin = Cm(2.5) # 下页边距 2.5 厘米
section.left_margin = Inches(1.25) # 左页边距 1.25 英寸
section.right_margin = Inches(1.25) # 右页边距 1.25 英寸# 页眉/页脚与页边距的距离
section.header_distance = Pt(12) # 页眉距上页边距 12 磅
section.footer_distance = Pt(12) # 页脚距下页边距 12 磅
2. 纸张大小与方向
from docx.shared import Cm
from docx.enum.section import WD_ORIENTATIONsection = doc.sections[0]# 设置纸张大小(A4:21cm 宽 × 29.7cm 高)
section.page_width = Cm(21.0) # 纸张宽度
section.page_height = Cm(29.7) # 纸张高度# 设置页面方向(纵向/横向)
section.orientation = WD_ORIENTATION.LANDSCAPE # 横向
# section.orientation = WD_ORIENTATION.PORTRAIT # 纵向(默认)
提示:设置横向时,
page_width和page_height会自动交换(无需手动调整)。
3. 页码与节的关联
节可以独立设置页码格式和起始值,适合多章节文档:
from docx.enum.header_footer import WD_HEADER_FOOTER# 取消与前一节的页眉页脚关联(独立设置)
section = doc.sections[1]
section.different_first_page_header_footer = True # 首页不同
section.header.is_linked_to_previous = False # 页眉不继承前节
section.footer.is_linked_to_previous = False # 页脚不继承前节# 设置页码起始值(从 1 开始)
section.start_page_numbering_at = 1
五、注意事项
- 节的顺序与内容归属:新增内容默认属于最后一个节,若需在中间节添加内容,需先定位到对应位置(通过段落索引插入)。
- 继承关系:新节默认继承前一节的设置,修改时需先取消关联(
is_linked_to_previous = False)。 - 兼容性:复杂的节设置可能在不同版本 Word 中显示有差异,建议最终用目标版本验证。
