python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python格式化Word文本和段落

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

作者:大丸子

在创建专业 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()

结果文档:

关键属性说明:

高级字符效果

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

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()

结果文档:

行距规则对比:

段落边框和底纹

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

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()

结果文档:

常用内置样式:

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

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

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文本和段落的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文