如何在 C# | IronXl.Excel 中為 Excel 單元格新增註解

如何使用 C# 在Excel試算表中加入註解 (不含 Interop)

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 IronXl.Excel 簡單的 API 在 C# 中為 Excel試算表的單元格新增註解 - 無需互操作。 只需在任何儲存格中輸入 AddComment(),即可添加註解、標記或說明,這些內容不會影響儲存格中的資料。

快速入門:僅需一行代碼即可在儲存格中新增註解

只需呼叫一個方法,即可在任何 Excel 單元格中加入註解。 無需互操作性,毫無複雜性——只需在手機上呼叫 AddComment,一切就搞定了。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXl.Excel

    PM > Install-Package IronXl.Excel
  2. 複製並運行這段程式碼。

    IronXl.WorkBook.Create().DefaultWorkSheet["B2"].First().AddComment("Quick tip!", "Dev");
  3. 部署到您的生產環境進行測試

    今天就在您的專案中開始使用免費試用IronXL

    arrow pointer

開始使用 IronXL

立即開始在您的項目中使用 IronXL 並免費試用。

第一步:
green arrow pointer


如何在 Excel 單元格中加入註解?

AddComment 接受哪些參數?

選取儲存格,並使用 AddComment 方法在儲存格中新增註解。 預設情況下,評論是不可見的。 將滑鼠移至單元格上以查看註解。 AddComment 方法接受三個參數:author(字串)以及 isVisible(布林值)。 contentauthor 參數皆為選用,可設為 null,讓您能建立空白註解或不標示作者的註解。

在您的 .NET 應用程式中使用 Excel 註解時,瞭解 IronXL 如何處理儲存格引用是非常重要的。 如果您是 IronXL 的新使用者,請查看全面的 入門概述,瞭解以程式化方式處理 Excel 檔案的基本知識。 對於需要雲端部署的企業應用程式,IronXl.Excel 可與 Azure 環境AWS Lambda 函式無縫整合。

何時應該讓注釋預設為可見?

在 Excel 中,註解通常會預設隱藏,以維持整潔的試算表外觀。 然而,您可能希望在建立訓練材料、提供資料輸入的詳細說明,或強調使用者必須立即看到的關鍵資訊等情況下,使用可見的注釋。 將 AddComment 的第三個參數設為 true,即可在不需將游標懸停的情況下顯示註解。

對於更進階的 Excel 操作任務,包括 從零開始建立新的試算表,或 管理現有的工作表,IronXl.Excel 提供了一套完整的工具,可以無縫協同運作。 在建立資料驅動的應用程式時,您可能也需要 將 Excel 資料匯出為各種格式,或 在不同的試算表類型之間進行轉換

如果我在已有註解的單元格中新增註解會怎麼樣?

當您在已包含註解的儲存格中呼叫 AddComment 時,IronXL 會將現有註解替換為新的註解。 此行為可確保您不會意外地在單一單元格上建立重複的註解。 若需保留現有註解內容,請先透過 Comment 屬性擷取內容,再將內容串接或合併後,再新增更新後的註解。

:path=/static-assets/excel/content-code-examples/how-to/add-comment-add-comment.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.DefaultWorkSheet;

Cell cellA1 = workSheet["A1"].First();
Cell cellD1 = workSheet["D1"].First();

// Add comments
cellA1.AddComment("Hello World!", "John Doe"); // Add comment with content and author. The comment is invisible by default.
cellD1.AddComment(null, null, true); // Add comment with no content and no author. The comment is set to be visible.

workBook.SaveAs("addComment.xlsx");
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Create()
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

Private cellA1 As Cell = workSheet("A1").First()
Private cellD1 As Cell = workSheet("D1").First()

' Add comments
cellA1.AddComment("Hello World!", "John Doe") ' Add comment with content and author. The comment is invisible by default.
cellD1.AddComment(Nothing, Nothing, True) ' Add comment with no content and no author. The comment is set to be visible.

workBook.SaveAs("addComment.xlsx")
$vbLabelText   $csharpLabel

以下是一個實用的範例,在一個循環中加入註解到多個單元格,對於加入批次註解或驗證註解很有用:

using IronXL;
using System;

// Load an existing workbook
WorkBook workBook = WorkBook.Load("salesData.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Add comments to cells that meet specific criteria
for (int row = 2; row <= 10; row++)
{
    var cell = workSheet[$"D{row}"].First();
    var value = cell.DoubleValue;

    if (value > 1000)
    {
        // Add performance comment for high values
        cell.AddComment($"Excellent performance! Value: {value:C}", "Sales Manager", true);
    }
    else if (value < 500)
    {
        // Add improvement comment for low values
        cell.AddComment($"Needs attention. Current: {value:C}", "Sales Manager", false);
    }
}

// Add timestamp comment to track last update
var updateCell = workSheet["A1"].First();
updateCell.AddComment($"Last updated: {DateTime.Now:yyyy-MM-dd HH:mm}", "System");

workBook.SaveAs("salesDataWithComments.xlsx");
using IronXL;
using System;

// Load an existing workbook
WorkBook workBook = WorkBook.Load("salesData.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Add comments to cells that meet specific criteria
for (int row = 2; row <= 10; row++)
{
    var cell = workSheet[$"D{row}"].First();
    var value = cell.DoubleValue;

    if (value > 1000)
    {
        // Add performance comment for high values
        cell.AddComment($"Excellent performance! Value: {value:C}", "Sales Manager", true);
    }
    else if (value < 500)
    {
        // Add improvement comment for low values
        cell.AddComment($"Needs attention. Current: {value:C}", "Sales Manager", false);
    }
}

// Add timestamp comment to track last update
var updateCell = workSheet["A1"].First();
updateCell.AddComment($"Last updated: {DateTime.Now:yyyy-MM-dd HH:mm}", "System");

workBook.SaveAs("salesDataWithComments.xlsx");
Imports IronXL
Imports System

' Load an existing workbook
Dim workBook As WorkBook = WorkBook.Load("salesData.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Add comments to cells that meet specific criteria
For row As Integer = 2 To 10
    Dim cell = workSheet($"D{row}").First()
    Dim value = cell.DoubleValue

    If value > 1000 Then
        ' Add performance comment for high values
        cell.AddComment($"Excellent performance! Value: {value:C}", "Sales Manager", True)
    ElseIf value < 500 Then
        ' Add improvement comment for low values
        cell.AddComment($"Needs attention. Current: {value:C}", "Sales Manager", False)
    End If
Next

' Add timestamp comment to track last update
Dim updateCell = workSheet("A1").First()
updateCell.AddComment($"Last updated: {DateTime.Now:yyyy-MM-dd HH:mm}", "System")

workBook.SaveAs("salesDataWithComments.xlsx")
$vbLabelText   $csharpLabel

我該如何編輯現有的評論?

為什麼 Comment 屬性有時會傳回 Null?

當選取的儲存格沒有相關註解時,Comment 屬性會傳回 null。 這是以程式化方式迭代儲存格時常見的情況。 在嘗試修改註解屬性之前,請務必檢查是否存在 null,以避免 NullReferenceException。 此模式類似於 IronXL's comprehensive API 中的其他單元格屬性。

若您正在處理複雜的 Excel 檔案,並遇到意料之外的 null 值,這些疑難排解指南可協助您了解 IronXL 在處理不同 Excel 格式與檔案結構時的運作行為。 對於處理大型 Excel 檔案的效能關鍵應用程式,請參閱 效能里程碑文件,以最佳化您的註解作業。

我可以修改註解的哪些屬性?

IronXL 的 Comment 物件提供了三個可修改的主要屬性:Author (字串)、Content (字串) 以及 IsVisible (布林值)。 Author 屬性用於標示評論的創建者,對於協作文件非常有用。 Content 包含實際的註解文字,支援多行字串以提供詳細說明。 IsVisible 控制註解是永久顯示,還是僅在懸停時顯示。

這些註解屬性可與其他儲存格格式化功能一起使用。 例如,您可能想要結合註解與 單元格樣式與邊框,以便在試算表中建立視覺上截然不同的註解區段。 您也可以將 條件格式化套用至包含註解的單元格,使其在視覺上更為突出。

如何在建立註解後變更其顯示性?

透過存取儲存格的 Comment 屬性,來取得 Comment 物件。 請根據您的需求,將 IsVisible 屬性設定為 truefalse。 此動態控制可讓您根據使用者動作或應用程式邏輯中的特定條件來顯示或隱藏備註。

:path=/static-assets/excel/content-code-examples/how-to/add-comment-edit-comment.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("addComment.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

Cell cellA1 = workSheet["A1"].First();

// Retrieve comment
var comment = cellA1.Comment;

// Edit comment
comment.Author = "Jane Doe";
comment.Content = "Bye World";
comment.IsVisible = true;

workBook.SaveAs("editComment.xlsx");
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("addComment.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

Private cellA1 As Cell = workSheet("A1").First()

' Retrieve comment
Private comment = cellA1.Comment

' Edit comment
comment.Author = "Jane Doe"
comment.Content = "Bye World"
comment.IsVisible = True

workBook.SaveAs("editComment.xlsx")
$vbLabelText   $csharpLabel

以程式化方式編輯 Excel 檔案時,註解提供了一種非侵入性的方式來新增元資料或備註,而不會改變實際的儲存格數值。 這使得它們成為稽核追蹤、檢閱程序或提供資料變更上下文的完美工具。 對於需要維持資料完整性的應用程式,請考慮 使用密碼保護您的 Excel 檔案,同時仍允許註解修改。


如何從儲存格中移除註解?

移除註解時,儲存格格式會發生什麼變化?

從儲存格中移除註解不會影響任何其他儲存格的屬性或格式。 儲存格的數值、公式、樣式、邊框和背景顏色保持不變。 這種隔離可確保註解管理作業的安全性,不會在不經意間修改您精心格式化的試算表。 此行為符合 IronXL 保留 工作簿元資料 和格式的原則,除非明確修改。

我可以一次移除多個註解嗎?

雖然 IronXL 並未提供同時移除工作表中所有註解的內建方法,但您可以透過迭代單元格輕鬆實現此功能。 建立一個簡單的循環,檢查每個儲存格是否有註解並將其移除。 此方法提供您精細的控制,讓您可以根據作者、內容關鍵字或單元位置等條件選擇性地移除註解。

Remove a comment from a cell by accessing the cell object and calling the RemoveComment method. 此操作是立即執行的,不需要儲存工作簿即可生效,但您應該儲存變更以將其持久化到磁碟上。

:path=/static-assets/excel/content-code-examples/how-to/add-comment-remove-comment.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("addComment.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

Cell cellA1 = workSheet["A1"].First();

// Remove comment
cellA1.RemoveComment();

workBook.SaveAs("removeComment.xlsx");
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("addComment.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

Private cellA1 As Cell = workSheet("A1").First()

' Remove comment
cellA1.RemoveComment()

workBook.SaveAs("removeComment.xlsx")
$vbLabelText   $csharpLabel

Excel 中的注釋有多種用途,不僅僅是簡單的注釋。 在以程式化方式產生報告、提供資料輸入表單的說明,或在協同編輯過程中加入修訂註解時,這些工具對程式碼文件非常有價值。 在處理 資料驗證時,註解可以提供有關可接受值的有用提示。 對於複雜的資料處理工作流程,您可能會結合註解與 命名範圍,以建立更容易維護的自我文件化電子表格。

有了 IronXL 簡單直接的 API,管理這些註解變得和其他儲存格操作一樣簡單,使其成為在您的 C# 應用程式中建立專業、檔案完備的 Excel 檔案的必要工具。 無論您是在建立 ASP.NET 網路應用程式或桌上型解決方案,IronXl.Excel 的註解功能都能無縫整合至您的工作流程中,而不會產生 COM Interop 的複雜性。

常見問題解答

如何在 C# 中為 Excel 單元格新增註解?

您可以使用 IronXl.Excel 的 AddComment 方法為 Excel 單元格新增註解。只需選擇一個儲存格,並使用內容、作者和可見度參數呼叫 AddComment。例如:worksheet["B2"].First().AddComment(「您的評論」, "Author", false)。這不需要互操作,只需呼叫單一方法即可運作。

AddComment 方法接受哪些參數?

IronXL 的 AddComment 方法接受三個參數:content (字串)、author (字串) 和 isVisible (布林)。content 和 author 參數都是可選的,並且可以為空,讓您可以建立空的評論或沒有作者屬性的評論。isVisible 參數可控制評論是否在不懸停的情況下顯示。

我可以不使用 Office Interop 來建立 Excel 註解嗎?

是的,IronXl.Excel 允許您新增、編輯和移除 Excel 註解,而不需要 Office Interop。這使得它非常適用於無法安裝 Office 的伺服器環境和雲端部署。該函式庫提供了一個簡單的 API,可程式化地處理所有 Excel 註解操作。

如何使 Excel 註解預設為顯示?

若要在 IronXL 中預設使備註顯示,請將 AddComment 方法的第三個參數設定為 true。例如:cell.AddComment("Content", "Author", true)。這對於訓練教材、資料輸入指示,或強調使用者必須立即看到的重要資訊非常有用。

我可以擷取和編輯 Excel 單元格中的現有註解嗎?

是的,IronXL 允許您透過存取儲存格的 Comment 屬性來擷取現有的註解。擷取後,您可以修改註解的內容、作者或可見度設定。這可在您的 Excel 自動化工作流程中實現動態註解管理。

如何以程式化的方式移除 Excel 單元格中的註解?

IronXL 提供 RemoveComment 方法來刪除儲存格中的註解。只需在任何包含註解的單元格中呼叫此方法即可將其刪除。這對於清理試算表或以程式方式更新註解資訊非常有用。

在 Excel 中加入註解所需的最少代碼是多少?

使用 IronXL 新增註解的最小程式碼只有一行:IronXl.WorkBook.Create().DefaultWorkSheet["B2"].First().AddComment("Quick tip!", "Dev")。這會建立一個工作簿、選取單元格 B2,並新增包含內容和作者的註解 - 不需要額外設定。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 1,948,677 | 版本: 2026.4 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXl.Excel
執行範例 觀看您的資料變成試算表。