在团队协作处理 Excel 数据时,批注(Comment)是一种特别实用的沟通方式。它允许你在单元格上贴个便签,写写备注,标标审核意见,又不影响原始数据本身。如果全靠手动一个个去点,遇到数据量大或者重复性高的场景,实在有点低效。用程序来批量处理这些批注,就能省下不少精力。比如一次性给所有异常值加上说明、统一批注格式、自动标注数据来源,这些事情都可以用 Python 来完成。以下会一步步展示如何用 Python 来实现批注的添加、编辑、格式调整乃至删除。
环境准备
本文用到的库是 Spire.XLS for Python,直接通过 pip 安装就好:
复制代码pip install Spire.XLS
装完之后引入模块,就可以直接开始操作了。
添加基础批注
先说说最基础的操作,就是给某个单元格加一段文字说明。通过访问单元格的 Comment 属性,直接设置内容即可。
复制代码from spire.xls import *
from spire.xls.common import *workbook = Workbook()
sheet = workbook.Worksheets[0]# 设置单元格文本
sheet.Range["A1"].Text = "产品A"# 添加批注
sheet.Range["A1"].Comment.Text = "该产品已停产,数据仅供参考"# 设置批注可见
sheet.Range["A1"].Comment.Visible = Trueworkbook.Sa veToFile("BasicComment.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
这里 Comment.Text 负责设置纯文本内容,Visible 属性则决定批注是否默认显示。如果设为 False,批注依然存在,但只有鼠标悬停时才会冒出来。
添加带作者信息的批注
多人协作的时候,批注是谁写的其实挺关键。可以用 AddComment() 创建批注对象,再手动拼接作者名和正文。
复制代码from spire.xls import *
from spire.xls.common import *workbook = Workbook()
workbook.LoadFromFile("DataFile.xlsx")
sheet = workbook.Worksheets[0]# 获取目标单元格
cell_range = sheet.Range["C1"]# 添加批注并设置属性
comment = cell_range.AddComment()
comment.Width = 200
comment.Visible = True# 拼接作者和正文
author = "张经理"
text = "本季度数据已核实,可以发布。"
comment.Text = author + ":n" + text# 对作者名加粗
font = workbook.CreateFont()
font.FontName = "Tahoma"
font.KnownColor = ExcelColors.Black
font.IsBold = True
comment.RichText.SetFont(0, len(author), font)workbook.Sa veToFile("CommentWithAuthor.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
这里 RichText.SetFont() 可以用来对批注文本的某一段指定字体,参数分别是起始字符索引和结束字符索引。上面这段代码就是从第 0 个字符到作者名末尾,应用粗体,这样作者名和正文明显区分开来。
创建富文本批注
有时候,批注里需要不同的颜色或字体来区分信息层级,比如“已审核”用绿色,“需要关注”用蓝色。这时候富文本格式就派上用场了。
复制代码from spire.xls import *
from spire.xls.common import *workbook = Workbook()
sheet = workbook.Worksheets[0]# 创建不同颜色的字体
font_green = workbook.CreateFont()
font_green.FontName = "Arial"
font_green.Size = 11
font_green.KnownColor = ExcelColors.LightGreenfont_blue = workbook.CreateFont()
font_blue.FontName = "Arial"
font_blue.Size = 11
font_blue.KnownColor = ExcelColors.LightBlue# 设置单元格和批注
cell_range = sheet.Range["B12"]
cell_range.Text = "销售数据"
cell_range.RichText.SetFont(0, 16, font_green)# 设置富文本批注
cell_range.Comment.RichText.Text = "已审核: 数据正常"
cell_range.Comment.RichText.SetFont(0, 4, font_green)
cell_range.Comment.RichText.SetFont(5, 9, font_blue)workbook.Sa veToFile("RichTextComment.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
RichText.SetFont(start_index, end_index, font) 这个方法允许对批注文本的不同区段应用不同字体,非常适合在需要区分状态标签和详细说明时使用。
设置批注的背景颜色
批注框默认是淡黄色的,但也可以通过修改填充属性换成其他颜色,更醒目一些。
复制代码from spire.xls import *
from spire.xls.common import *workbook = Workbook()
sheet = workbook.Worksheets[0]# 添加批注
cell_range = sheet.Range["A1"]
cell_range.Comment.Text = "重要提示:此数据需要复核"# 设置字体颜色
font = workbook.CreateFont()
font.FontName = "Arial"
font.Size = 11
font.KnownColor = ExcelColors.Orange
cell_range.Comment.RichText.SetFont(0, len(cell_range.Comment.Text) - 1, font)# 设置批注背景色
cell_range.Comment.Fill.FillType = ShapeFillType.SolidColor
cell_range.Comment.Fill.ForeColor = Color.get_SkyBlue()
cell_range.Comment.Visible = Trueworkbook.Sa veToFile("CommentFillColor.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Fill.FillType 设为 ShapeFillType.SolidColor 后,用 ForeColor 指定颜色即可。用颜色来标记批注的优先级或类别,一目了然。
调整批注的位置、大小和对齐方式
批注框的位置和尺寸,其实都可以直接控制。说白了你完全可以像布置 UI 一样调整它。
复制代码from spire.xls import *
from spire.xls.common import *workbook = Workbook()
sheet = workbook.Worksheets[0]# 添加批注
sheet.Range["G5"].Text = "数据项"
comment = sheet.Range["G5"].Comment
comment.IsVisible = True
comment.Height = 150
comment.Width = 300# 设置批注文本
comment.RichText.Text = "审核备注:n此项数据来源于系统导出,已经过初步校验。"# 设置文本旋转方向
comment.TextRotation = TextRotationType.LeftToRight# 设置批注位置(相对于工作表)
comment.Top = 20
comment.Left = 40# 设置文本对齐方式
comment.VAlignment = CommentVAlignType.Center
comment.HAlignment = CommentHAlignType.Justifiedworkbook.Sa veToFile("CommentPosition.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
几个关键属性值得留意:
Height和Width:用来控制批注框的尺寸Top和Left:批注框相对于工作表的左上角坐标VAlignment:垂直对齐,可选Top、Center、BottomHAlignment:水平对齐,可选Left、Center、Right、Justified
为批注添加图片背景
纯色背景之外,还可以放图片做批注背景,比如嵌入公司 Logo 或某个状态图标。
复制代码from spire.xls import *
from spire.xls.common import *workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Range["C6"].Text = "负责人"# 添加批注并设置图片背景
comment = sheet.Range["C6"].AddComment()
image = Stream("Logo.png")
comment.Fill.CustomPicture(image, "logo.png")
comment.Visible = Trueworkbook.Sa veToFile("CommentWithImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Fill.CustomPicture() 接受图片流和名称两个参数,图片加载后会作为批注框的背景。
读取和编辑已有批注
对于已有的 Excel 文件,读取和修改批注也很方便,直接遍历工作表的批注集合即可。
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("ExistingFile.xlsx")
sheet = workbook.Worksheets[0]# 读取指定单元格的批注
comment_text = sheet.Range["A1"].Comment.Text
print("批注内容:", comment_text)# 读取富文本批注的 RTF 格式
rtf_text = sheet.Range["A2"].Comment.RichText.RtfText
print("RTF 内容:", rtf_text)workbook.Dispose()
编辑已有批注也不复杂,通过索引找到目标批注,修改属性就行:
复制代码# 获取第一个批注并修改内容
comment = sheet.Comments[0]
comment.Text = "批注内容已更新"
控制批注的显示和隐藏
批注可以单独控制可见性,不用删除就能临时隐藏或重新显示。
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("CommentFile.xlsx")
sheet = workbook.Worksheets[0]# 隐藏指定批注
sheet.Comments[1].IsVisible = False# 显示指定批注
sheet.Comments[2].IsVisible = Trueworkbook.Sa veToFile("CommentVisibility.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
打印或演示的时候,有些审核批注可能需要暂时藏起来,这个办法就很方便。
删除批注
批注不再需要时,直接移除即可。
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("CommentFile.xlsx")
sheet = workbook.Worksheets[0]# 删除第二个批注
sheet.Comments[1].Remove()workbook.Sa veToFile("CommentRemoved.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Remove() 是真的把它从工作表里清掉了。如果想一次清除所有批注,遍历 sheet.Comments 挨个调用 Remove() 就行。
总结
以上内容覆盖了用 Python 管理 Excel 批注的常见操作,具体包括:
- 添加基础文本批注和带作者信息的批注
- 用富文本设置不同颜色或样式的批注内容
- 设置批注背景颜色和图片背景
- 调整批注的位置、大小和文本对齐
- 读取、编辑、隐藏和删除已有批注
这些基本操作可以覆盖批注管理的绝大多数场景。在此基础上,再结合数据校验逻辑自动添加批注,或者批量处理多个 Excel 文件中的批注内容,就可以构建更完善的自动化工作流了。
