C#代码实现隐藏或显示Excel中的批注

 更新时间:2026年06月02日 08:20:28   作者:2501_93070778  
Excel 中的批注是一种附加在单元格上的文本说明,本文将为大家详细介绍如何通过 C# 在 Excel 中隐藏或显示批注,有需要的小伙伴可以了解下

Excel 中的批注是一种附加在单元格上的文本说明,主要用于对单元格内容进行补充解释或提供额外信息。通过为特定单元格添加批注,用户可以更清晰地说明工作表中的数据含义。

不过,当工作表中存在大量批注时,可能会影响界面的整洁度,甚至遮挡部分内容。为了提升工作表的可读性和视觉效果,可以根据需要隐藏现有批注,使数据展示更加清晰;在需要查看说明信息时,也可以随时重新显示这些批注。

本文将介绍如何通过 C# 在 Excel 中隐藏或显示批注。

安装所需库

在开始之前,需要在 .NET 项目中添加相应的 Excel 处理库引用。您可以下载对应的 DLL 文件并手动添加到项目中,也可以通过 NuGet 包管理器进行安装。

PM> Install-Package Spire.XLS

在 Excel 中隐藏批注

通过 Excel 处理库提供的批注可见性属性,可以控制批注是否显示。将该属性设置为 false 后,即可隐藏现有批注。

以下是隐藏 Excel 批注的具体步骤:

  1. 创建一个 Workbook 实例。
  2. 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  3. 通过 Workbook.Worksheets[] 获取指定工作表。
  4. 将目标批注的可见性属性设置为 false,以隐藏该批注。
  5. 使用 Workbook.SaveToFile() 方法保存结果文件。

完整示例代码如下:

using Spire.Xls;

namespace ShowExcelComments
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 对象并加载 Excel 文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Comments.xlsx");

            // 获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 隐藏工作表中的指定批注
            sheet.Comments[0].IsVisible = false;

            // 保存结果文件
            workbook.SaveToFile("HideComment.xlsx", ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}

在 Excel 中显示批注

当需要查看批注内容时,可以重新显示已隐藏的批注。只需将批注的可见性属性设置为 true,即可使其重新显示。

以下是在 Excel 中显示批注的具体步骤:

  1. 创建一个 Workbook 实例。
  2. 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  3. 通过 Workbook.Worksheets[] 获取指定工作表。
  4. 将目标批注的可见性属性设置为 true,以显示该批注。
  5. 使用 Workbook.SaveToFile() 方法保存结果文件。

完整示例代码如下:

using Spire.Xls;

namespace ShowExcelComments
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 对象并加载 Excel 文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("HideComment.xlsx");

            // 获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 显示工作表中的指定批注
            sheet.Comments[0].IsVisible = true;

            // 保存结果文件
            workbook.SaveToFile("ShowComment.xlsx", ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}

知识扩展

操作 Excel 批注的可见性,常规做法是通过 Visible 或 IsVisible 属性来控制,关键点在于找到正确的批注对象。下面汇总了几种主流 .NET 组件的方法。

使用 Spire.XLS(功能全面,API 直观)

using Spire.Xls;
// 1. 实例化 Workbook 并加载文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("Comments.xlsx");
// 2. 获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 3. 隐藏特定批注(例如第一个批注)
sheet.Comments[0].IsVisible = false;
// 设置 sheet.Comments[0].IsVisible = true; 即可显示该批注
// 4. 隐藏或显示所有批注
foreach (ExcelComment comment in sheet.Comments)
{
    comment.IsVisible = true; // 设置为 false 则隐藏
}
// 5. 保存文件
workbook.SaveToFile("Result.xlsx", ExcelVersion.Version2013);

这种方法通过 Comments 集合索引或遍历即可轻松实现。

// 查找并控制特定单元格的批注可见性
CellRange specificCell = sheet.Range["B5"];
if (specificCell.HasComment)
{
    specificCell.Comment.IsVisible = true; // 或 false
}

使用 Aspose.Cells(功能强大,适合复杂操作)

using Aspose.Cells;
// 1. 加载工作簿
Workbook workbook = new Workbook("Comments.xlsx");
// 2. 获取第一个工作表
Worksheet worksheet = workbook.Worksheets[0];
// 3. 访问指定单元格的批注并设置可见性
Cell cell = worksheet.Cells["B5"];
if (cell.HasComment)
{
    cell.Comment.IsVisible = true;
    // cell.Comment.IsVisible = false;
}

Aspose.Cells 也为批量操作提供了类似方法。

使用 GemBox.Spreadsheet(轻量级,许可灵活)

using GemBox.Spreadsheet;
// 加载文件
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY"); 
var workbook = ExcelFile.Load("Comments.xlsx");
var worksheet = workbook.Worksheets[0];
// 获取批注对象并设置可见性
ExcelComment comment = worksheet.Cells["B5"].Comment;
comment.IsVisible = true; // 或 false

核心在于 comment.IsVisible 属性。

使用 GrapeCity Documents for Excel(GcExcel,高性能)

using GrapeCity.Documents.Excel;
// 1. 创建工作簿并加载文件
Workbook workbook = new Workbook();
workbook.Open("Comments.xlsx");
// 2. 获取第一个工作表
IWorksheet worksheet = workbook.Worksheets[0];
// 3. 设置批注可见性
IComment comment = worksheet.Range["B5"].Comment;
comment.Visible = true; // 或 false

comment.Visible 是控制显示的关键属性。

使用 NPOI(开源、免费,但需手动处理索引)

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
// 1. 加载工作簿
XSSFWorkbook workbook = null;
using (FileStream file = new FileStream("Comments.xlsx", FileMode.Open, FileAccess.Read))
{
    workbook = new XSSFWorkbook(file);
}
// 2. 获取第一个工作表
ISheet sheet = workbook.GetSheetAt(0);
// 3. 遍历所有行和单元格查找并修改批注
for (int rowIndex = 0; rowIndex <= sheet.LastRowNum; rowIndex++)
{
    IRow row = sheet.GetRow(rowIndex);
    if (row != null)
    {
        for (int cellIndex = 0; cellIndex < row.LastCellNum; cellIndex++)
        {
            ICell cell = row.GetCell(cellIndex);
            if (cell != null && cell.CellComment != null)
            {
                // 注意:NPOI 主要通过替换文本模拟显示/隐藏,
                // 此处演示如何访问批注对象
                var comment = cell.CellComment;
                comment.String = new XSSFRichTextString(comment.String.String); 
                // 或者考虑删除批注再重新添加来模拟显示/隐藏
            }
        }
    }
}
// 4. 保存文件
using (FileStream file = new FileStream("Result.xlsx", FileMode.Create))
{
    workbook.Write(file);
}

NPOI 获取批注直接通过 cell.CellComment,其核心是直接修改 Visible 属性的库。

总结

本文介绍了如何通过 C# 在 Excel 工作表中隐藏和显示批注。通过修改批注对象的可见性属性,可以灵活控制批注的显示状态:将其设置为 false 可隐藏批注,使工作表界面更加整洁;设置为 true 则可重新显示批注,方便查看补充说明信息。

借助这种方式,开发者可以根据实际业务需求动态管理批注的显示效果,在保证数据可读性的同时,提升 Excel 文档的整体展示体验。

到此这篇关于C#代码实现隐藏或显示Excel中的批注的文章就介绍到这了,更多相关C#隐藏或显示Excel批注内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中删除列表元素的四种方法实现

    C#中删除列表元素的四种方法实现

    本文主要介绍了C#中删除列表元素的四种方法实现,包括倒序遍历,LINQ生成新列表,RemoveAll及数组转List,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05
  • C#实现XOR密码(异或密码)的示例代码

    C#实现XOR密码(异或密码)的示例代码

    XOR密码(异或密码)是一种简单的加密算法,它使用异或(XOR)操作来对明文和密钥进行加密和解密,本文为大家介绍了C#实现XOR密码的相关知识,希望对大家有所帮助
    2024-01-01
  • 深入分析C# Task

    深入分析C# Task

    这篇文章主要介绍了C# Task的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习C# Task的相关知识,感兴趣的朋友可以了解下
    2020-08-08
  • 使用异步方式调用同步方法(实例详解)

    使用异步方式调用同步方法(实例详解)

    .NET Framework 允许您异步调用任何方法。为此,应定义与您要调用的方法具有相同签名的委托;公共语言运行时会自动使用适当的签名为该委托定义BeginInvoke和EndInvoke方法
    2013-10-10
  • C#检测文件是否被进程占用的实用方法

    C#检测文件是否被进程占用的实用方法

    Windows 应用程序开发中,文件操作是非常常见且重要的功能之一,然而,在多进程或多线程环境下,一个文件可能被多个程序同时访问,导致"文件已被其他进程占用"的问题,所以本文介绍了使用C#检测文件是否被进程占用的实用方法,需要的朋友可以参考下
    2025-05-05
  • Unity实现打砖块游戏

    Unity实现打砖块游戏

    这篇文章主要为大家详细介绍了Unity实现打砖块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Path类 操作文件类的实例

    Path类 操作文件类的实例

    下面小编就为大家分享一篇Path类 操作文件类的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • C#中字段、属性、只读、构造函数赋值、反射赋值的问题

    C#中字段、属性、只读、构造函数赋值、反射赋值的问题

    这篇文章主要介绍了C#中字段、属性、只读、构造函数赋值、反射赋值的问题 ,非常不错,具有一定的参考借鉴借鉴价值,需要的朋友可以参考下
    2018-08-08
  • C#中static的详细用法实例

    C#中static的详细用法实例

    在C#中所有方法都必须在一个类的内部声明,然而如果把一个方法或字段声明为Static,就可以使用类名来调用方法或访问字段,下面这篇文章主要给大家介绍了关于C#中static详细用法的相关资料,需要的朋友可以参考下
    2022-12-12
  • WinForm中DefWndProc、WndProc与IMessageFilter的区别

    WinForm中DefWndProc、WndProc与IMessageFilter的区别

    这篇文章主要介绍了WinForm中DefWndProc、WndProc与IMessageFilter的区别,较为详细的分析了WinForm的消息处理机制,需要的朋友可以参考下
    2014-08-08

最新评论