使用Python格式化Word文档中的文本和段落

 更新时间:2026年03月24日 09:49:49   作者:大丸子  
在创建专业 Word 文档时,文本和段落的格式化是基础且重要的技能,本文将介绍如何使用 Python 对 Word 文档中的文本字符和段落进行各种格式化操作,需要的朋友可以参考下

引言

在创建专业 Word 文档时,文本和段落的格式化是基础且重要的技能。良好的格式设置可以提升文档的可读性和专业性。本文将介绍如何使用 Python 对 Word 文档中的文本字符和段落进行各种格式化操作。

掌握这些技术对于生成报告、合同、简历等各类文档都具有重要价值,特别是在需要批量生成格式统一文档的自动化场景中。

本文方法基于 Free Spire.Doc for Python。

环境准备

首先需要安装 Free Spire.Doc for Python 库:

pip install Spire.Doc.Free

该库提供了完整的 Word 文档处理功能,支持文本和段落的各种格式化操作。

字符格式化基础

字符格式化控制文本的外观,包括字体、大小、颜色等属性:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
# 添加不同样式的文本
paragraph = section.AddParagraph()
# 基本字体设置
text1 = paragraph.AppendText("这是普通文本。\n")
text1.CharacterFormat.FontName = "微软雅黑"
text1.CharacterFormat.FontSize = 12
# 粗体和斜体
text2 = paragraph.AppendText("这是粗体文本。\n")
text2.CharacterFormat.Bold = True
text2.CharacterFormat.FontSize = 14
# 斜体文本
text3 = paragraph.AppendText("这是斜体文本。\n")
text3.CharacterFormat.Italic = True
# 粗斜体
text4 = paragraph.AppendText("这是粗斜体文本。\n")
text4.CharacterFormat.Bold = True
text4.CharacterFormat.Italic = True
# 下划线
text5 = paragraph.AppendText("这是带下划线的文本。\n")
text5.CharacterFormat.UnderlineStyle = UnderlineStyle.Single
# 文本颜色
text6 = paragraph.AppendText("这是红色文本。\n")
text6.CharacterFormat.TextColor = Color.get_Red()
# 高亮显示
text7 = paragraph.AppendText("这是黄色高亮文本。")
text7.CharacterFormat.HighlightColor = Color.get_Yellow()
document.SaveToFile("character_formatting.docx", FileFormat.Docx)
document.Close()

结果文档:

关键属性说明:

  • FontName:设置字体名称,支持中英文字体
  • FontSize:字体大小,单位为磅(point)
  • Bold / Italic:布尔值,控制粗体和斜体
  • UnderlineStyle:下划线样式枚举
  • TextColor / HighlightColor:文本颜色和背景高亮色

高级字符效果

除了基本格式,还可以应用各种特殊文本效果:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
paragraph = section.AddParagraph()
# 删除线
text1 = paragraph.AppendText("删除线文本\n")
text1.CharacterFormat.IsStrikeout = True
# 双删除线
text2 = paragraph.AppendText("双删除线文本\n")
text2.CharacterFormat.DoubleStrike = True
# 阴影效果
text3 = paragraph.AppendText("阴影文本\n")
text3.CharacterFormat.IsShadow = True
# 小大写字母
text4 = paragraph.AppendText("SMALL CAPS TEXT\n")
text4.CharacterFormat.IsSmallCaps = True
# 全部大写
text5 = paragraph.AppendText("All Caps Text\n")
text5.CharacterFormat.AllCaps = True
# 上标和下标
text6 = paragraph.AppendText("H₂O 和 E=mc²\n")
# 注意:需要分别设置每个字符的上标/下标
# 轮廓效果
text7 = paragraph.AppendText("轮廓文本\n")
text7.CharacterFormat.IsOutLine = True
# 阳文效果
text8 = paragraph.AppendText("阳文文本\n")
text8.CharacterFormat.Emboss = True
# 阴文效果
text9 = paragraph.AppendText("阴文文本\n")
text9.CharacterFormat.Engrave = True
# 隐藏文本
text10 = paragraph.AppendText("可见文本")
hidden = paragraph.AppendText(" [隐藏内容]")
hidden.CharacterFormat.Hidden = True
document.SaveToFile("text_effects.docx", FileFormat.Docx)
document.Close()

结果文档:

这些特殊效果适用于特定场景:

  • 删除线:标记已删除或过时的内容
  • 上标/下标:数学公式、化学式
  • 隐藏文本:添加备注或注释
  • 阳文/阴文:特殊印刷效果

段落对齐方式

段落对齐控制文本在页面上的水平位置:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
# 左对齐
para1 = section.AddParagraph()
para1.AppendText("这是左对齐的段落。")
para1.Format.HorizontalAlignment = HorizontalAlignment.Left
# 居中对齐
para2 = section.AddParagraph()
para2.AppendText("这是居中对齐的段落。")
para2.Format.HorizontalAlignment = HorizontalAlignment.Center
# 右对齐
para3 = section.AddParagraph()
para3.AppendText("这是右对齐的段落。")
para3.Format.HorizontalAlignment = HorizontalAlignment.Right
# 两端对齐
para4 = section.AddParagraph()
para4.AppendText("这是两端对齐的段落,文本会在左右边界之间均匀分布,使段落看起来更加整齐。" * 3)
para4.Format.HorizontalAlignment = HorizontalAlignment.Justify
# 分散对齐
para5 = section.AddParagraph()
para5.AppendText("分散对齐示例")
para5.Format.HorizontalAlignment = HorizontalAlignment.Distribute
document.SaveToFile("paragraph_alignment.docx", FileFormat.Docx)
document.Close()

结果文档:

段落缩进设置

缩进用于控制段落与页面边界的距离:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
# 首行缩进(中文文档常用)
para1 = section.AddParagraph()
para1.AppendText("这是首行缩进的段落。在中文文档中,通常每个自然段的首行会缩进两个字符的位置,这是传统的排版习惯。")
para1.Format.SetFirstLineIndent(28)  # 约等于两个字符宽度
# 悬挂缩进
para2 = section.AddParagraph()
para2.AppendText("这是悬挂缩进的段落。悬挂缩进是指除首行外的其他行都缩进,常用于参考文献列表或项目清单。")
para2.Format.SetFirstLineIndent(-28)  # 负值表示悬挂缩进
# 左缩进
para3 = section.AddParagraph()
para3.AppendText("这个段落整体向右缩进。左缩进将整个段落向右移动,适用于引用文本或需要特别标注的内容。")
para3.Format.SetLeftIndent(40)
# 右缩进
para4 = section.AddParagraph()
para4.AppendText("这个段落右侧也进行了缩进。通过同时设置左右缩进,可以创建一个居中但不对称的文本块效果。")
para4.Format.SetLeftIndent(40)
para4.Format.SetRightIndent(40)
document.SaveToFile("paragraph_indentation.docx", FileFormat.Docx)
document.Close()

结果文档:

缩进类型说明:

  • 首行缩进:仅第一行缩进,正值
  • 悬挂缩进:除第一行外都缩进,负值
  • 左/右缩进:整个段落的左右边界调整

段落间距和行距

控制段落之间和段落内部的垂直间距:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
title = section.AddParagraph()
title.AppendText("段落间距和行距示例")
title.ApplyStyle(BuiltinStyle.Heading1)
# 段前间距
para1 = section.AddParagraph()
para1.AppendText("这个段落上方有较大的间距。")
para1.Format.BeforeSpacing = 20  # 段前 20 磅
# 段后间距
para2 = section.AddParagraph()
para2.AppendText("这个段落下方有较大的间距。")
para2.Format.AfterSpacing = 20  # 段后 20 磅
# 固定行距
para3 = section.AddParagraph()
para3.AppendText("这是固定行距的文本内容。\n第二行文本。\n第三行文本。")
para3.Format.LineSpacingRule = LineSpacingRule.Exactly
para3.Format.LineSpacing = 24  # 固定 24 磅行距
# 最小行距
para4 = section.AddParagraph()
para4.AppendText("这是最小行距的文本内容。\n第二行文本。\n第三行文本。")
para4.Format.LineSpacingRule = LineSpacingRule.AtLeast
para4.Format.LineSpacing = 18  # 至少 18 磅,可根据字体大小自动调整
# 倍数行距
para5 = section.AddParagraph()
para5.AppendText("这是 1.5 倍行距的文本内容。\n第二行文本。\n第三行文本。")
para5.Format.LineSpacingRule = LineSpacingRule.Multiple
para5.Format.LineSpacing = 1.5  # 1.5 倍行距
document.SaveToFile("paragraph_spacing.docx", FileFormat.Docx)
document.Close()

结果文档:

行距规则对比:

  • Exactly:固定值,不随字体大小变化
  • AtLeast:最小值,可根据内容扩展
  • Multiple:倍数关系(如 1.5 倍、2 倍)

段落边框和底纹

为段落添加边框和背景色:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
# 四边边框
para1 = section.AddParagraph()
para1.AppendText("这个段落带有四边边框。")
para1.Format.Borders.BorderType = BorderStyle.Single
para1.Format.Borders.Color = Color.get_Blue()
para1.Format.Borders.LineWidth = 1.0
# 单独设置各边边框
para2 = section.AddParagraph()
para2.AppendText("这个段落只有上下边框。")
para2.Format.Borders.Top.BorderType = BorderStyle.Double
para2.Format.Borders.Top.Color = Color.get_Red()
para2.Format.Borders.Bottom.BorderType = BorderStyle.Single
para2.Format.Borders.Bottom.Color = Color.get_Green()
# 添加背景底纹
para3 = section.AddParagraph()
para3.AppendText("这个段落有灰色背景。")
para3.Format.BackColor = Color.get_LightGray()
# 组合效果
para4 = section.AddParagraph()
para4.AppendText("边框 + 底纹的组合效果。")
para4.Format.Borders.BorderType = BorderStyle.Single
para4.Format.Borders.Color = Color.get_DarkBlue()
para4.Format.BackColor = Color.get_LightYellow()
document.SaveToFile("paragraph_borders.docx", FileFormat.Docx)
document.Close()

结果文档:

使用内置样式

Word 提供了丰富的内置样式,可以快速应用专业格式:

from spire.doc import *
from spire.doc.common import *
document = Document()
section = document.AddSection()
# 标题样式
title = section.AddParagraph()
title.AppendText("主标题")
title.ApplyStyle(BuiltinStyle.Title)
# 各级标题
heading1 = section.AddParagraph()
heading1.AppendText("一级标题")
heading1.ApplyStyle(BuiltinStyle.Heading1)
heading2 = section.AddParagraph()
heading2.AppendText("二级标题")
heading2.ApplyStyle(BuiltinStyle.Heading2)
heading3 = section.AddParagraph()
heading3.AppendText("三级标题")
heading3.ApplyStyle(BuiltinStyle.Heading3)
# 正文样式
normal = section.AddParagraph()
normal.AppendText("这是普通正文样式。")
normal.ApplyStyle(BuiltinStyle.Normal)
# 引用样式
quote = section.AddParagraph()
quote.AppendText("这是引用样式,适用于名人名言或重要引文。")
quote.ApplyStyle(BuiltinStyle.CommentReference)
# 列表段落样式
listPara = section.AddParagraph()
listPara.AppendText("列表项内容")
listPara.ApplyStyle(BuiltinStyle.ListBullet)
document.SaveToFile("builtin_styles.docx", FileFormat.Docx)
document.Close()

结果文档:

常用内置样式:

  • Title / Heading1-9:标题层级
  • Normal:标准正文
  • CommentReference:引用
  • ListBullet:列表项

综合示例:格式化商业信函

下面是一个完整的商业信函格式化示例:

from spire.doc import *
from spire.doc.common import *
def create_business_letter():
    document = Document()
    section = document.AddSection()
    # 设置页面边距
    section.PageSetup.LeftMargin = 72  # 1 英寸
    section.PageSetup.RightMargin = 72
    # 公司信头(居中,大号字体)
    header = section.AddParagraph()
    company_name = header.AppendText("某某科技有限公司")
    company_name.CharacterFormat.FontName = "微软雅黑"
    company_name.CharacterFormat.FontSize = 18
    company_name.CharacterFormat.Bold = True
    header.Format.HorizontalAlignment = HorizontalAlignment.Center
    header.Format.AfterSpacing = 10
    # 联系信息(居中,小号字体)
    contact = section.AddParagraph()
    contact_text = contact.AppendText("地址:北京市朝阳区某某路 123 号 | 电话:010-12345678 | 邮箱:info@company.com")
    contact_text.CharacterFormat.FontSize = 10
    contact_text.CharacterFormat.TextColor = Color.get_DarkGray()
    contact.Format.HorizontalAlignment = HorizontalAlignment.Center
    contact.Format.AfterSpacing = 30
    # 日期(右对齐)
    date_para = section.AddParagraph()
    from datetime import datetime
    date_para.AppendText(f"日期:{datetime.now().strftime('%Y年%m月%d日')}")
    date_para.Format.HorizontalAlignment = HorizontalAlignment.Right
    date_para.Format.AfterSpacing = 20
    # 收件人信息(左对齐,加粗)
    recipient = section.AddParagraph()
    recipient_text = recipient.AppendText("尊敬的客户:\n")
    recipient_text.CharacterFormat.Bold = True
    recipient.Format.AfterSpacing = 20
    # 正文段落(首行缩进,两端对齐)
    body1 = section.AddParagraph()
    body1.AppendText("感谢您一直以来对我们公司的支持与信任。我们非常重视与您的合作关系,并致力于为您提供最优质的产品和服务。")
    body1.Format.SetFirstLineIndent(28)
    body1.Format.HorizontalAlignment = HorizontalAlignment.Justify
    body1.Format.LineSpacingRule = LineSpacingRule.Multiple
    body1.Format.LineSpacing = 15
    body1.Format.AfterSpacing = 20
    body2 = section.AddParagraph()
    body2.AppendText("为了进一步提升服务质量,我们将于下个月推出全新的客户服务计划。该计划将为您提供更多个性化选择和专属优惠。我们相信,通过这些改进,我们的合作将更加紧密和愉快。")
    body2.Format.SetFirstLineIndent(28)
    body2.Format.HorizontalAlignment = HorizontalAlignment.Justify
    body2.Format.LineSpacingRule = LineSpacingRule.Multiple
    body2.Format.LineSpacing = 15
    body2.Format.AfterSpacing = 20
    # 结束语(右对齐)
    closing = section.AddParagraph()
    closing.AppendText("此致\n敬礼\n\n")
    closing.Format.HorizontalAlignment = HorizontalAlignment.Right
    closing.Format.AfterSpacing = 10
    # 签名区域
    signature = section.AddParagraph()
    sig_name_text = sig_name = signature.AppendText("张三\n")
    sig_name_text.CharacterFormat.Bold = True
    signature.AppendText("客户经理\n某某科技有限公司")
    signature.Format.SetFirstLineIndent(28)
    document.SaveToFile("business_letter.docx", FileFormat.Docx)
    document.Close()
# 执行
create_business_letter()

运行结果:

总结

本文全面介绍了使用 Python 格式化 Word 文档中文字和段落的各种技术。主要内容包括:

  • 字符格式化:字体、大小、颜色、特殊效果
  • 段落对齐:左对齐、居中、右对齐、两端对齐、分散对齐
  • 段落缩进:首行缩进、悬挂缩进、左右缩进
  • 间距控制:段前距、段后距、行距规则
  • 装饰效果:边框、底纹、背景色
  • 内置样式:快速应用专业格式

掌握这些格式化技术后,开发者可以创建出格式规范、外观专业的各类 Word 文档。在实际应用中,应根据文档类型和用途选择合适的格式化组合,既要保证可读性,也要考虑美观性和专业性。

通过程序化设置格式,可以实现批量文档的自动化生成,确保所有文档保持一致的格式标准,大大提高文档处理效率。

以上就是使用Python格式化Word文档中的文本和段落的详细内容,更多关于Python格式化Word文本和段落的资料请关注脚本之家其它相关文章!

相关文章

  • Python Flask框架实现Proteus仿真Arduino与网页数据交互

    Python Flask框架实现Proteus仿真Arduino与网页数据交互

    这篇文章主要介绍了Python Flask框架实现Proteus仿真Arduino与网页数据交互,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • Python编程ContextManager上下文管理器讲解

    Python编程ContextManager上下文管理器讲解

    这篇文章主要介绍了Python编程中对Context Manager上下文管理器的详解说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-09-09
  • 提升Python编程水平必不可少的重构技巧

    提升Python编程水平必不可少的重构技巧

    在Python中,编写可读性强且Pythonic的代码是至关重要的,重构技巧是指通过调整代码结构和风格,使其更符合Python的惯例和标准,从而提高代码的可读性、简洁性和可维护性,本文将深入探讨八项重构技巧,帮助您编写更Pythonic的代码
    2024-01-01
  • python 实现单例模式的5种方法

    python 实现单例模式的5种方法

    这篇文章主要介绍了python 实现单例模式的5种方法,帮助大家更好的理解和学习python 设计模式,感兴趣的朋友可以了解下
    2020-09-09
  • python装饰器使用方法实例

    python装饰器使用方法实例

    这篇文章主要介绍了python装饰器的使用方法,大家参考使用
    2013-11-11
  • 如何利用 Python 绘制动态可视化图表

    如何利用 Python 绘制动态可视化图表

    这篇文章主要介绍了如何利用 Python 绘制动态可视化图表,主要介绍介绍如何进行保存gif格式的文件。那么我们就开始进入主题,来谈一下Python当中的gif模块,需要的朋友可以参考一下
    2022-02-02
  • python 动态规划问题解析(背包问题和最长公共子串)

    python 动态规划问题解析(背包问题和最长公共子串)

    这篇文章主要介绍了python 动态规划(背包问题和最长公共子串),在动态规划中,你要将某个指标最大化。在这个例子中,你要找出两个单词的最长公共子串。fish和fosh都包含的最长子串是什么呢,感兴趣的朋友跟随小编一起看看吧
    2022-05-05
  • Python实现SVM支持向量机的示例代码

    Python实现SVM支持向量机的示例代码

    SVM 的目的是在数据集中找到一条最佳分隔超平面,使得在这个超平面两侧的数据分别属于不同的类别,且该超平面与最近的数据点之间的距离最大。本文将通过Python实现SVM支持向量机,感兴趣的可以了解一下
    2023-02-02
  • python连接池pooledDB源码阅读参数的使用

    python连接池pooledDB源码阅读参数的使用

    这篇文章主要介绍了python连接池pooledDB源码阅读参数的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Django数据统计功能count()的使用

    Django数据统计功能count()的使用

    这篇文章主要介绍了Django数据统计功能count()的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论