用Python在Word文档中插入和删除文本框
off999 2025-06-18 23:35 78 浏览 0 评论
在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独立于正文流的位置调整与样式定制,但其手动操作存在重复性高、批量处理困难等痛点。通过Python脚本对文本框进行精准控制,不仅能够实现跨文档的批量插入与删除操作,还能将复杂布局设计与数据动态绑定,例如自动生成报告模板、标准化企业文档格式或构建交互式内容系统。本文将介绍如何使用Python在Word文档中插入和删除文本框。
- 用Python插入文本框到Word文档
- 用Python删除Word文档中的文本框
本文所使用的方法需要用到Free Spire.Doc for Python,PyPI:pip install spire.doc.free。
用Python插入文本框到Word文档
我们可以使用库中提供的Workbook类来创建或载入Word文档,然后使用Paragraph.AppendTextBox(width: float, height: float)方法在段落中添加任意尺寸的文本框。其中,TextBox.Format属性可对文本框格式进行设置,同时我们可以在文本框中添加文本、图片等元素。
以下是操作步骤:
- 创建Document实例,以新建Word文档。
- 使用Document.AddSection()方法在文档中添加一个节,并设置页面。
- 使用Section.AddParagraph()方法在节中添加一个段落,并插入内容。
- 使用Paragraph.AppendTextBox()方法,在段落中添加一个指定尺寸的文本框。
- 使用TextBox.Format下的属性设置文本框格式。
- 使用TextBox.Body.AddParagraph()方法在文本框中添加段落。
- 在文本框段落中添加内容并设置格式。
- 使用Document.SaveToFile()方法保存Word文档。
代码示例
from spire.doc import Document, VerticalOrigin, TextWrappingStyle, HorizontalOrigin, BackgroundType, Color, TextBoxLineStyle, LineDashing, HorizontalAlignment, FileFormat
# 创建文档对象
document = Document()
# 添加节
section = document.AddSection()
section.PageSetup.Margins.Top = 50
section.PageSetup.Margins.Bottom = 50
# 添加段落
main_paragraph = section.AddParagraph()
text_range = main_paragraph.AppendText("以下是一个文本框示例:\r\n")
text_range.CharacterFormat.FontName = "微软雅黑"
text_range.CharacterFormat.FontSize = 14
# 在段落中添加一个文本框
textbox = main_paragraph.AppendTextBox(300, 200) # 设置文本框尺寸
# 设置文本框位置和环绕样式
textbox.Format.HorizontalOrigin = HorizontalOrigin.Page
textbox.Format.HorizontalPosition = 50
textbox.Format.VerticalOrigin = VerticalOrigin.Page
textbox.Format.VerticalPosition = 80
textbox.Format.TextWrap = TextWrappingStyle.InFrontOfText
# 设置渐变背景填充
textbox.Format.FillEfects.Type = BackgroundType.Gradient
textbox.Format.FillEfects.Gradient.Color1 = Color.get_BlueViolet()
textbox.Format.FillEfects.Gradient.Color2 = Color.get_LightSkyBlue()
textbox.Format.FillEfects.Gradient.Angle = 45
# 设置三维边框样式
textbox.Format.LineColor = Color.get_DarkBlue()
textbox.Format.LineStyle = TextBoxLineStyle.ThickThin
textbox.Format.LineWidth = 3.5
textbox.Format.LineDashing = LineDashing.DashDot
# 在文本框内添加带图标的标题段落
header_paragraph = textbox.Body.AddParagraph()
icon = header_paragraph.AppendPicture("alert.png")
icon.Width = 20
icon.Height = 20
title_text = header_paragraph.AppendText(" 重要通知")
title_text.CharacterFormat.FontName = "微软雅黑"
title_text.CharacterFormat.FontSize = 14
title_text.CharacterFormat.TextColor = Color.get_Gold()
# 添加分隔线
separator = textbox.Body.AddParagraph()
separator.Format.Borders.Top.Color = Color.get_Gold()
separator.Format.Borders.Top.LineWidth = 2
separator.Format.Borders.Top.Space = 5
# 添加图文混排内容
content_paragraph = textbox.Body.AddParagraph()
image = content_paragraph.AppendPicture("document.png")
image.Width = 60
image.Height = 60
image.TextWrappingStyle = TextWrappingStyle.Through
text_content = content_paragraph.AppendText("本通知包含重要更新内容,请仔细阅读。如需进一步操作,请访问我们的知识库或联系技术支持。")
text_content.CharacterFormat.FontName = "黑体"
text_content.CharacterFormat.FontSize = 12
text_content.CharacterFormat.TextColor = Color.get_WhiteSmoke()
# 添加旋转文字装饰
rotated_paragraph = textbox.Body.AddParagraph()
rotated_text = rotated_paragraph.AppendText("机密文件")
rotated_text.CharacterFormat.FontName = "HarmonyOS Sans SC"
rotated_text.CharacterFormat.FontSize = 24
rotated_text.CharacterFormat.TextColor = Color.FromArgb(100, 255, 255, 255)
rotated_paragraph.Format.Rotation = 30 # 30度旋转
rotated_paragraph.Format.HorizontalAlignment = HorizontalAlignment.Right
# 保存文档
document.SaveToFile("output/TextBox.docx", FileFormat.Docx2019)
document.Close()
结果文档
用Python删除Word文档中的文本框
我们可以用Document.TextBoxes属性来获取文档中的所有文本框,然后使用RemoveAt()方法根据参数删除指定文本框,或直接使用Clear()方法删除所有文本框。
以下是操作步骤:
- 创建Document对象,使用Document.LoadFromFile()方法载入Word文档。
- 使用Document.TextBoxes获取文档中的所有文本框。
- 使用TextBoxCollection.RemoveAt()方法删除指定文本框,或使用TextBoxCollection.Clear()方法删除所有文本框。
- 使用Document.SaveToFile()方法保存Word文档。
代码示例
from spire.doc import Document
# 创建Document对象
document = Document()
# 载入Word文档
document.LoadFromFile("output/TextBox.docx")
# 删除指定文本框
document.TextBoxes.RemoveAt(0)
# 删除所有文本框
document.TextBoxes.Clear()
# 保存文档
document.SaveToFile("output/RemoveTextBox.docx")
document.Close()
结果文档
本文演示如何使用Python在Word文档中插入和删除文本框,提供操作步骤和代码示例。
相关推荐
- Linux 网络协议栈_linux网络协议栈
-
前言;更多学习资料(包含视频、技术学习路线图谱、文档等)后台私信《资料》免费领取技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,Z...
- 揭秘 BPF map 前生今世_bpfdm
-
1.前言众所周知,map可用于内核BPF程序和用户应用程序之间实现双向的数据交换,为BPF技术中的重要基础数据结构。在BPF程序中可以通过声明structbpf_map_def...
- 教你简单 提取fmpeg 视频,音频,字幕 方法
-
ffmpeg提取视频,音频,字幕方法(HowtoExtractVideo,Audio,SubtitlefromOriginalVideo?)1.提取视频(ExtractVi...
- Linux内核原理到代码详解《内核视频教程》
-
Linux内核原理-进程入门进程进程不仅仅是一段可执行程序的代码,通常进程还包括其他资源,比如打开的文件,挂起的信号,内核内部的数据结构,处理器状态,内存地址空间,或多个执行线程,存放全局变量的数据段...
- Linux C Socket UDP编程详解及实例分享
-
1、UDP网络编程主要流程UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址。...
- libevent源码分析之bufferevent使用详解
-
libevent的bufferevent在event的基础上自己维护了一个buffer,这样的话,就不需要再自己管理一个buffer了。先看看structbufferevent这个结构体struct...
- 一次解决Linux内核内存泄漏实战全过程
-
什么是内存泄漏:程序向系统申请内存,使用完不需要之后,不释放内存还给系统回收,造成申请的内存被浪费.发现系统中内存使用量随着时间的流逝,消耗的越来越多,例如下图所示:接下来的排查思路是:1.监控系统中...
- 彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
-
作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成...
- linux网络编程常见API详解_linux网络编程视频教程
-
Linux网络编程API函数初步剖析今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。1、socket(family...
- Linux下C++访问web—使用libcurl库调用http接口发送解析json数据
-
一、背景这两天由于一些原因研究了研究如何在客户端C++代码中调用web服务端接口,需要访问url,并传入json数据,拿到返回值,并解析。 现在的情形是远程服务端的接口参数和返回类型都是json的字符...
- 平衡感知调节:“系统如人” 视角下的架构设计与业务稳定之道
-
在今天这个到处都是数字化的时代,系统可不是一堆冷冰冰的代码。它就像一个活生生的“数字人”,没了它,业务根本转不起来。总说“技术要为业务服务”,但实际操作起来问题不少:系统怎么才能快速响应业务需求?...
- 谈谈分布式文件系统下的本地缓存_什么是分布式文件存储
-
在分布式文件系统中,为了提高系统的性能,常常会引入不同类型的缓存存储系统(算法优化所带来的的效果可能远远不如缓存带来的优化效果)。在软件中缓存存储系统一般可分为了两类:一、分布式缓存,例如:Memca...
- 进程间通信之信号量semaphore--linux内核剖析
-
什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠...
- Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
-
一、前言在推流领域,尤其是监控行业,现在主流设备基本上都是265格式的视频流,想要在网页上直接显示监控流,之前的方案是,要么转成hls,要么魔改支持265格式的flv,要么265转成264,如果要追求...
- 30 分钟搞定 SpringBoot 视频推拉流!实战避坑指南
-
30分钟搞定SpringBoot视频推拉流!实战避坑指南在音视频开发领域,SpringBoot凭借其快速开发特性,成为很多开发者实现视频推拉流功能的首选框架。但实际开发中,从环境搭建到流处理优...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)