☰
Python 操作 Excel:创建、编辑和格式化文本框
2026/10/29 1:50:16 网站建设 项目流程

在制作说明性表格时, 仅靠单元格难以承载大段说明文字, 在制作仪表盘时, 情况也是如此, 制作带批注的报表时同样如此,它能独立于单元格网格, 它可放置在任意位置, 它能容纳多行文本, 它能单独设置字体与背景, 它不影响周边单元格的数据与公式, Excel的**文本框()**提供了这样一种容器。

当处于自动化流程里要批量生成这类带有注释的表格之际, 运用程序去操控文本框这般的方式比透过手工实施绘制的方法所能达成的效率更高, 而且也体现出更容易维持一种一致性的表现。在这篇文章当中将会针对如何于Excel工作表里插入文本框展开介绍, 并且会涉及到对其进行文本方面的设置, 对齐方式的设置, 字体样式及特性的设置, 背景风格及相关属性的设置, 内边距各参数值的设置, 自动换行功能开启及相关调整等常见设置情况, 另外还会涵盖读取文本框当中文字以及将文本框里文字予以替换等内容。

为什么使用文本框而非普通单元格

相比把说明文字直接写进单元格,文本框有几个实际优点:

环境准备

用 Spire.XLS for 来处理 Excel 文本框, 可经由 pip 进行安装。

pip install Spire.Xls

在脚本中按如下方式导入主模块与通用模块:

from spire.xls import * from spire.xls.common import *

插入文本框并设置文本与对齐

在工作表中插入文本框使用

工作表中的文本框, 其参数依次为文本框所在的行, 所在的列, 它的高度, 以及它的宽度, 这些均是以 Excel 内部单位来计算的。当插入该文本框之后, 就能够借助 Text 属性来写入内容, 并且可以通过斜杠来控制文字的水平与垂直对齐方式, 以此来实现特定的排版需求。

from spire.xls import * from spire.xls.common import * workbook = Workbook() workbook.Version = ExcelVersion.Version2013 sheet = workbook.Worksheets[0] # 在第 2 行第 2 列插入文本框,高度 18、宽度 65 个单位 textbox = sheet.TextBoxes.AddTextBox(2, 2, 18, 65) textbox.Text = "Spire.XLS for Python 是一款专业的 Excel Python API..." textbox.HAlignment = CommentHAlignType.Center textbox.VAlignment = CommentVAlignType.Center workbook.SaveToFile("TextBox.xlsx", ExcelVersion.Version2013) workbook.Dispose()

要留意的是, 其前两个参数, 也就是行、列, 会决定文本框左上角所锚定的是哪一个单元格位置, 而后两个参数, 则决定了它自身的尺寸, 此与单元格本身的宽高并非是同一套单位, 在进行设置的时候, 要以实际显示效果作为依据。

设置字体与背景

经过富文本()机制来设置文本框的文字外观, 能够对从某一个字符直至另一个字符的区间字体予以精确控制, 背景是借助 Fill 属性去填充纯色的。

from spire.xls import * from spire.xls.common import * workbook = Workbook() workbook.LoadFromFile("Template_Xls_5.xlsx") sheet = workbook.Worksheets[0] shape = sheet.TextBoxes[0] # 创建字体并设置属性 font = workbook.CreateFont() font.FontName = "Century Gothic" font.Size = 10 font.IsBold = True font.Color = Color.get_Blue() # 将字体应用到整个文本框文本 rt = RichText(shape.RichText) rt.SetFont(0, len(shape.Text) - 1, font) # 设置纯色背景 shape.Fill.FillType = ShapeFillType.SolidColor shape.Fill.ForeKnownColor = ExcelColors.BlueGray workbook.SaveToFile("SetFontAndBackground.xlsx", ExcelVersion.Version2013) workbook.Dispose()

在这里, .(start, end, font) 这三个参数, 它们分别是起始索引、结束索引以及字体对象, 索引是从0开始的, 并且包含两端。要是只对整段文本统一布置样式, 使用把0到len(text) - 1用来覆盖全部字符就行;而当需要在局部进行高亮时, 再将对应的那个区间传入就可以了。

设置内边距与自动换行

在文本框之中, 当其中所包含的文字数量较多的情况之下, 此时能够借助内边距属性这种方式, 对文字跟边框之间的间距实施控制, 并且还能够凭借开启自动换行这种举措, 防止文字出现溢出或者过度拥挤的状况。

from spire.xls import * from spire.xls.common import * workbook = Workbook() workbook.LoadFromFile("Template_Xls_4.xlsx") sheet = workbook.Worksheets[0] textbox = sheet.TextBoxes.AddTextBox(4, 2, 100, 300) textbox.Text = "在 Excel 中插入文本框并设置内边距" textbox.HAlignment = CommentHAlignType.Center textbox.VAlignment = CommentVAlignType.Center # 设置文本框内部边距 textbox.InnerLeftMargin = 1 textbox.InnerRightMargin = 3 textbox.InnerTopMargin = 1 textbox.InnerBottomMargin = 1 workbook.SaveToFile("SetInternalMarginOfTextbox.xlsx", ExcelVersion.Version2013) workbook.Dispose()

对于已存在、文字较长的文本框,直接开启自动换行即可:

from spire.xls import * from spire.xls.common import * workbook = Workbook() workbook.LoadFromFile("TextBoxSampleB.xlsx") sheet = workbook.Worksheets[0] shape = sheet.TextBoxes[0] shape.IsWrapText = True workbook.SaveToFile("TextBoxWithWrapText.xlsx", ExcelVersion.Version2013) workbook.Dispose()

用于内边距的单位是这样一种被称作磅(point)的量度, 当此数值越大的时候,文字距离文本边框就会变得越远;存在一种自动换行的情况, 这种情况下文本框会依据内容, 在已然设置好的尺寸范围之内重新进行行的排列, 而这两者相互配合起来能够明显地改善长文本所带来的排版观感。

读取与替换文本框中的文本

文本框从本质上来说, 属于文档里能够被访问的对象, 对 sheet 进行遍历, 就能够读取其中的文字, 或者对文字进行批量替换, 这样的情况很适合用来做模板占位符的填充。

from spire.xls import * from spire.xls.common import * workbook = Workbook() workbook.LoadFromFile("ReplaceTextInTextBox.xlsx") sheet = workbook.Worksheets[0] # 遍历所有文本框,替换指定文本 for tb in sheet.TextBoxes: if tb.Text != "" and "" in tb.Text: tb.Text = tb.Text.replace("", "Spire.XLS for .NET") workbook.SaveToFile("ReplaceTextInTextBox.xlsx", ExcelVersion.Version2013) workbook.Dispose()

要是文档当中文本框数量较多, 那还能够给文本框赋予名称, 随后依照名称直接进行定位, 并非要依靠索引。

from spire.xls import * from spire.xls.common import * workbook = Workbook() sheet = workbook.Worksheets[0] textbox = sheet.TextBoxes.AddTextBox(2, 2, 18, 65) textbox.Name = "FirstTextBox" textbox.Text = "需要被检索的说明文字" # 按名称获取文本框 found = sheet.TextBoxes["FirstTextBox"] print(found.Text) workbook.Dispose()

当要生成数量众多带有标识的文本框之际, 命名方式显得格外实用, 比如说, 将每一个说明框都给予这样的命名, 像"注释_客户信息", 又例如"注释_费用说明"之类的, 只有如此往后进行维护时才能够准确无误地命中目标。

实用建议总结

本文环绕Excel文本框平常操作进行解析, 介绍插入文本框, 设置文本对齐方式, 设置字体与背景, 调整内边距与自动换行, 以及读取和替换文本框文字四个方面, 这些能力的统一入口是工作表的sheet集合, 其中负责创建, Text与负责内容与样式, Fill负责背景, Inner*与负责排版, 而遍历或按名称访问则支撑了批量维护。

在这个基础之上, 能够将文本框跟图表、形状以及数据验证这类功能相互组合, 比如说给图表增添带有说明内容的文本框,在仪表盘当中利用文本框来承载动态提示语, 进而使得自动生成的Excel文档, 既有严谨的数据, 又有清晰的说明。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询