使用Python实现在Excel工作表中添加批注
作者:大丸子
在数据审核、财务报表审查、项目管理等实际业务场景中,批注是Excel中非常实用的功能。通过批注,审核人员可以对关键数据添加说明、备注或警示信息,而不会影响原始数据的呈现。例如,财务人员可以在异常数据旁添加批注说明原因,项目经理可以在里程碑节点添加进度备注,数据分析师可以在关键指标旁标注计算依据。然而,当面对大量数据或需要批量添加批注时,手动操作不仅耗时费力,而且容易遗漏或出错。通过Python编程实现批注的自动添加,可以大幅提升工作效率,保证批注的一致性和准确性。
本文将介绍如何使用 Free Spire.XLS for Python 在Excel工作表中添加各种类型的批注,包括普通文本批注、富文本批注、带作者的批注以及图像批注,并结合实际业务场景进行演示。
1. 环境准备
首先需要安装 Free Spire.XLS for Python 库:
pip install spire.xls.free
安装完成后,我们就可以开始使用Python操作Excel文件并添加批注了。
2. 添加普通文本批注
在实际业务中,普通文本批注是最常用的批注类型。例如,在对销售数据进行审核时,我们需要对异常数据添加说明。下面演示如何创建Excel文件并添加简单文本批注:
from spire.xls import Workbook, ExcelVersion
from spire.xls.common import *
# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 写入示例数据
sheet.Range["A1"].Text = "产品名称"
sheet.Range["B1"].Text = "销售额(万元)"
sheet.Range["A2"].Text = "笔记本电脑"
sheet.Range["B2"].NumberValue = 120
sheet.Range["A3"].Text = "平板电脑"
sheet.Range["B3"].NumberValue = 85
sheet.Range["A4"].Text = "智能手表"
sheet.Range["B4"].NumberValue = 45
# 为单元格添加普通文本批注
sheet.Range["B4"].Comment.Text = "该产品销售额偏低,建议加强市场推广"
# 自动调整列宽
sheet.Range.AutoFitColumns()
# 保存文件
workbook.SaveToFile("SimpleComment.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("普通文本批注已添加:SimpleComment.xlsx")工作表预览:

说明:
sheet.Range["B4"]获取需要添加批注的单元格.Comment.Text属性用于设置批注的文本内容- 批注会在鼠标悬停时显示,不影响单元格的显示效果
此步骤实现了基础的文本批注添加功能,适用于简单的数据标注场景。
3. 添加富文本批注
富文本批注支持对不同部分的文字设置不同的字体样式(如颜色、加粗等),这在需要突出显示关键信息时非常有用。例如,可以在批注中使用不同颜色标注问题和建议:
from spire.xls import Workbook, ExcelVersion, ExcelColors
from spire.xls.common import *
# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 写入示例数据
sheet.Range["A1"].Text = "员工姓名"
sheet.Range["B1"].Text = "季度绩效"
sheet.Range["A2"].Text = "张明"
sheet.Range["B2"].Text = "优秀"
# 创建字体样式
font_green = workbook.CreateFont()
font_green.FontName = "Arial"
font_green.Size = 11
font_green.KnownColor = ExcelColors.Green
font_red = workbook.CreateFont()
font_red.FontName = "Arial"
font_red.Size = 11
font_red.KnownColor = ExcelColors.Red
# 添加富文本批注
sheet.Range["B2"].Comment.RichText.Text = "绩效评级:优秀,继续保持"
sheet.Range["B2"].Comment.RichText.SetFont(0, 4, font_green) # "绩效评级:"设为绿色
sheet.Range["B2"].Comment.RichText.SetFont(5, 6, font_red) # "优秀"设为红色
# 自动调整列宽
sheet.Range.AutoFitColumns()
# 保存文件
workbook.SaveToFile("RichTextComment.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("富文本批注已添加:RichTextComment.xlsx")工作表预览:

说明:
workbook.CreateFont()创建自定义字体对象RichText.Text设置批注的完整文本RichText.SetFont(start, end, font)为指定范围的文本设置字体样式- 通过不同颜色的字体,可以清晰区分批注中的不同类型信息
富文本批注特别适合需要在批注中区分重要级别或信息类型的场景。
4. 添加带作者的批注
在团队协作环境中,批注通常需要标注作者信息,以便追溯审核人员。我们可以为批注设置作者名称并使用特殊格式显示:
from spire.xls import Workbook, ExcelVersion, ExcelColors
from spire.xls.common import *
# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 写入示例数据
sheet.Range["A1"].Text = "项目阶段"
sheet.Range["B1"].Text = "完成状态"
sheet.Range["A2"].Text = "需求分析"
sheet.Range["B2"].Text = "已完成"
sheet.Range["A3"].Text = "系统设计"
sheet.Range["B3"].Text = "进行中"
# 为单元格添加带作者的批注
range_cell = sheet.Range["B3"]
author = "李工程师"
text = "预计下周完成设计文档初稿"
comment = range_cell.AddComment()
comment.Width = 200
comment.Visible = True
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)
# 自动调整列宽
sheet.Range.AutoFitColumns()
# 保存文件
workbook.SaveToFile("CommentWithAuthor.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("带作者的批注已添加:CommentWithAuthor.xlsx")工作表预览:

说明:
range.AddComment()方法创建并返回批注对象comment.Width设置批注框的宽度comment.Visible = True使批注默认可见- 作者名称通过加粗字体突出显示,便于快速识别
这种格式的批注在多人协作审核场景中非常实用。
5. 添加图像批注
除了文本批注,Excel还支持图像批注,这在需要添加可视化说明时非常有用。例如,可以在产品SKU旁添加产品图片,或在项目节点旁添加进度截图:
from spire.xls import Workbook, ExcelVersion
from spire.xls.common import *
# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 写入示例数据
sheet.Range["A1"].Text = "产品编号"
sheet.Range["B1"].Text = "产品名称"
sheet.Range["A2"].Text = "PRD-001"
sheet.Range["B2"].Text = "旗舰手机"
# 添加图像批注
comment = sheet.Range["B2"].AddComment()
# 加载图片并设置为批注背景
image_path = "product_image.png" # 图片文件路径
image_stream = Stream(image_path)
comment.Fill.CustomPicture(image_stream, "product_image.png")
comment.Visible = True
# 自动调整列宽
sheet.Range.AutoFitColumns()
# 保存文件
workbook.SaveToFile("ImageComment.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
print("图像批注已添加:ImageComment.xlsx")工作表预览:

说明:
Stream(image_path)加载图片文件为数据流comment.Fill.CustomPicture()将图片设置为批注的填充背景- 图像批注会在鼠标悬停时显示,不占用工作表空间
图像批注适用于需要可视化辅助说明的场景,如产品展示、图纸标注等。
6. 设置批注填充颜色
为了使批注更加醒目或符合特定主题,可以自定义批注的填充颜色:
from spire.xls import Workbook, ExcelVersion, ExcelColors, ShapeFillType
from spire.xls.common import *
# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 写入示例数据
sheet.Range["A1"].Text = "任务名称"
sheet.Range["B1"].Text = "优先级"
sheet.Range["A2"].Text = "数据库优化"
sheet.Range["B2"].Text = "高"
# 添加批注并设置填充颜色
range_cell = sheet.Range["B2"]
range_cell.Comment.Text = "需要在月底前完成,涉及核心业务模块"
# 设置批注字体
font = workbook.CreateFont()
font.FontName = "Arial"
font.Size = 11
font.KnownColor = ExcelColors.Orange
range_cell.Comment.RichText.SetFont(0, len(range_cell.Comment.Text) - 1, font)
# 设置批注填充颜色
range_cell.Comment.Fill.FillType = ShapeFillType.SolidColor
range_cell.Comment.Fill.ForeColor = Color.get_SkyBlue()
range_cell.Comment.Visible = True
# 自动调整列宽
sheet.Range.AutoFitColumns()
# 保存文件
workbook.SaveToFile("ColoredComment.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("彩色批注已添加:ColoredComment.xlsx")工作表预览:

说明:
ShapeFillType.SolidColor设置填充类型为纯色Fill.ForeColor设置批注框的背景颜色Color.get_SkyBlue()使用预定义颜色,也可以使用RGB值自定义
通过颜色区分批注类型,可以快速识别不同级别或类型的备注信息。
7. 关键类与方法解析
在前面的章节中,我们展示了多种类型的批注添加方式。下面总结核心的类、方法和属性:
核心操作流程
- 创建或加载工作簿 - 使用
Workbook()创建新工作簿,或LoadFromFile()加载已有文件 - 获取单元格 - 通过
sheet.Range["A1"]或sheet.Range[row, col]定位目标单元格 - 添加批注 - 使用
range.Comment.Text直接设置,或range.AddComment()创建批注对象 - 设置批注样式 - 配置字体、颜色、大小、可见性等属性
- 保存文件 - 使用
SaveToFile()保存修改
关键类、方法与属性
| 类 / 方法 / 属性 | 说明 |
|---|---|
Workbook | Excel工作簿对象,代表整个Excel文件 |
Workbook.LoadFromFile(path) | 从本地文件加载Excel工作簿 |
Workbook.SaveToFile(path, version) | 保存Excel文件到指定路径 |
Workbook.CreateFont() | 创建字体对象,用于设置文本样式 |
Worksheet | 工作表对象,包含数据和批注 |
sheet.Range[address] | 通过地址获取单元格,如 Range["A1"] |
sheet.Range[row, col] | 通过行列索引获取单元格 |
range.Comment | 单元格的批注对象 |
range.AddComment() | 为单元格添加批注并返回批注对象 |
comment.Text | 批注的纯文本内容 |
comment.RichText.Text | 富文本批注的完整文本 |
comment.RichText.SetFont(start, end, font) | 为指定范围的文本设置字体样式 |
comment.Fill.CustomPicture(stream, name) | 将图片设置为批注背景 |
comment.Fill.FillType | 设置填充类型(纯色、图片等) |
comment.Fill.ForeColor | 设置批注框的填充颜色 |
comment.Visible | 设置批注是否默认可见 |
comment.Width | 设置批注框的宽度 |
Stream | 数据流对象,用于加载图片等二进制数据 |
Color | 颜色对象,提供预定义颜色和自定义颜色方法 |
ExcelColors 枚举值
常用的批注文本颜色包括:
ExcelColors.Red- 红色,用于警示信息ExcelColors.Green- 绿色,用于正常状态说明ExcelColors.Orange- 橙色,用于提示信息ExcelColors.Black- 黑色,用于默认文本ExcelColors.Blue- 蓝色,用于链接或参考信息
掌握这些核心API,可以灵活应对各种批注添加需求,并根据业务场景进行定制化开发。
总结
本文详细介绍了如何使用 Free Spire.XLS for Python 在Excel工作表中添加多种类型的批注,包括普通文本批注、富文本批注、带作者的批注、图像批注以及自定义颜色的批注。通过编程方式实现批注的批量添加和样式设置,不仅能够大幅提升工作效率,还能保证批注格式的一致性和专业性。
相比手动添加批注,代码方式具有以下优势:一是可以批量处理大量数据,避免重复劳动;二是可以精确控制批注的样式和格式;三是易于集成到自动化工作流中,如数据审核系统、报告生成系统等。你可以在此基础上扩展更多能力,例如批注的读取、编辑、删除,以及条件化的批注添加(仅对特定条件的数据添加批注)。
到此这篇关于使用Python实现在Excel工作表中添加批注的文章就介绍到这了,更多相关Python Excel工作表添加批注内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
