最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實(shí)現(xiàn)在Excel中添加或設(shè)置批注格式

 更新時(shí)間:2026年04月09日 14:23:47   作者:2501_93070778  
在 Excel 中,批注用于解釋單元格中的內(nèi)容,或添加對(duì)讀者有幫助的附加信息,本文將從以下兩個(gè)部分演示如何使用 C#/VB.NET 以編程方式向 Excel 工作表添加批注,希望對(duì)大家有所幫助

在 Excel 中,批注用于解釋單元格中的內(nèi)容,或添加對(duì)讀者有幫助的附加信息。使用 Spire.XLS for .NET,我們不僅可以輕松地為 Excel 單元格添加批注,還可以通過(guò)設(shè)置批注框大小或?yàn)榕⑽谋緫?yīng)用字體樣式來(lái)自定義其外觀。本文將從以下兩個(gè)部分演示如何使用 C#/VB.NET 以編程方式向 Excel 工作表添加批注。

安裝 Spire.XLS for .NET

首先,您需要將 Spire.XLS for .NET 包中包含的 DLL 文件添加為 .NET 項(xiàng)目的引用。這些 DLL 文件可以通過(guò)下載獲取,也可以通過(guò) NuGet 進(jìn)行安裝。

PM> Install-Package Spire.XLS

在 Excel 工作表中添加批注

Spire.XLS 提供了 CellRange.AddComment() 方法,用于在 Excel 工作表中添加普通文本批注。具體步驟如下:

  1. 初始化 Workbook 類的一個(gè)實(shí)例。
  2. 使用 Workbook.LoadFromFile() 方法加載 Excel 文件。
  3. 通過(guò) Workbook.Worksheets[int] 屬性獲取 Excel 文件中的第一個(gè)工作表。
  4. 使用 CellRange.AddComment() 方法在指定單元格區(qū)域添加批注,并通過(guò) ExcelComment 對(duì)象的 Text 屬性設(shè)置批注內(nèi)容。
  5. 使用 Workbook.SaveToFile() 方法將文檔保存為另一個(gè)文件。

示例代碼如下:

using Spire.Xls;

namespace WordDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 對(duì)象
            Workbook workbook = new Workbook();

            // 加載示例工作簿
            workbook.LoadFromFile("Sample.xlsx");

            // 獲取第一個(gè)工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 在指定單元格區(qū)域 C6 添加普通批注
            CellRange range = sheet.Range["C6"];
            ExcelComment comment = range.AddComment();
            comment.Text = "普通批注";                      
            
            // 保存 Excel 工作簿
            workbook.SaveToFile("Addcomment.xlsx", ExcelVersion.Version2016);

        }
    }
}

在 Excel 工作表中為批注應(yīng)用格式

Spire.XLS 提供了 Comment.RichText.SetFont() 方法,可用于為 Excel 工作表中的批注設(shè)置字體格式。

  1. 初始化 Workbook 類的一個(gè)實(shí)例。
  2. 使用 Workbook.LoadFromFile() 方法加載 Excel 文件。
  3. 通過(guò) Workbook.Worksheets[int] 屬性獲取 Excel 文件中的第一個(gè)工作表。
  4. 使用 CellRange.AddComment() 方法在指定單元格區(qū)域添加批注,并設(shè)置批注內(nèi)容。
  5. 創(chuàng)建一個(gè) ExcelFont 對(duì)象,并使用 ExcelComment.RichText.SetFont() 方法將字體應(yīng)用到批注文本。
  6. 使用 Workbook.SaveToFile() 方法將文檔保存為另一個(gè)文件。

示例代碼如下:

using Spire.Xls;

namespace ExcelComment
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 對(duì)象
            Workbook workbook = new Workbook();

            // 加載示例工作簿
            workbook.LoadFromFile("Sample.xlsx");

            // 獲取第一個(gè)工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 在指定單元格區(qū)域 C6 添加批注                                              
            CellRange range = sheet.Range["C6"];
            ExcelComment comment = range.AddComment();
            comment.Text = "帶格式的批注";                      
            
            // 設(shè)置寬度和高度
            comment.Width = 100;
            comment.Height = 200;

            // 顯示批注
            comment.Visible = true;

            // 創(chuàng)建字體
            ExcelFont font = workbook.CreateFont();
            font.FontName = "Calibri";
            font.Size = 14;
            font.KnownColor = ExcelColors.LightBlue;
            font.IsBold = true;

            // 將字體應(yīng)用到批注文本
            comment.RichText.SetFont(0, 27, font);

            // 保存 Excel 工作簿
            workbook.SaveToFile("AddcommentwithFormat.xlsx", ExcelVersion.Version2016);

        }
    }
}

知識(shí)擴(kuò)展

1. 添加批注與設(shè)置基礎(chǔ)文本

添加批注是所有操作的第一步,不同庫(kù)的寫法差異很大。

EPPlus:該庫(kù)對(duì)批注的添加和格式設(shè)置提供了強(qiáng)大而直觀的支持。你可以通過(guò) AddComment 方法為單元格添加批注,并立即通過(guò)返回的 ExcelComment 對(duì)象進(jìn)行基礎(chǔ)樣式設(shè)置。

// 獲取或創(chuàng)建單元格
var cell = worksheet.Cells[rowIndex, columnIndex];
// 添加批注,作者參數(shù)不可為空
var comment = cell.AddComment("批注內(nèi)容", "作者姓名");
// 基礎(chǔ)樣式設(shè)置(EPPlus特有)
comment.Font.Bold = true;      // 設(shè)置粗體
comment.AutoFit = true;        // 自動(dòng)調(diào)整大小
// 高級(jí)富文本樣式
var richText = comment.RichText.Add("內(nèi)容");
richText.Bold = false; // 單獨(dú)設(shè)置部分文本樣式

上述代碼來(lái)自 EPPlus 的官方實(shí)踐。需注意,AddComment 的第二個(gè)參數(shù)必須提供有效的作者名。

NPOI:添加批注的過(guò)程相對(duì)復(fù)雜,需要通過(guò) HSSFPatriarch(或 XSSFDrawing)來(lái)創(chuàng)建繪圖對(duì)象,然后再創(chuàng)建批注并關(guān)聯(lián)到單元格。

// 步驟較多,需先創(chuàng)建繪圖對(duì)象
HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
// 定義批注的位置和大小
HSSFComment comment = (HSSFComment)patriarch.CreateComment(new HSSFClientAnchor(...));
// 設(shè)置批注內(nèi)容和作者
comment.String = new HSSFRichTextString("批注內(nèi)容");
comment.Author = "作者姓名";
// 將批注與單元格關(guān)聯(lián)
cell.SetCellComment(comment);

上述代碼是 NPOI 添加批注的標(biāo)準(zhǔn)流程。雖然步驟繁瑣,但提供了極高的定制性。

Interop:這是最直接的方式,調(diào)用單元格的 AddComment 方法即可完成添加,與手動(dòng)在 Excel 中操作非常相似。

// 獲取單元格
Range cell = worksheet.Cells[row, column];
// 添加批注
cell.AddComment("批注內(nèi)容");

2. 設(shè)置批注文本格式(字體、顏色、大?。?/h3>

讓批注文本更美觀或突出,需要設(shè)置其字體、顏色、大小等格式。

EPPlus:使用 RichText 屬性可以實(shí)現(xiàn)豐富的文本樣式,為批注文本的不同部分設(shè)置獨(dú)立的樣式。

var comment = cell.AddComment("", "作者");
var rt = comment.RichText.Add("普通文本");
rt.Bold = true; // 設(shè)置加粗
rt.Color = Color.Red; // 設(shè)置字體顏色
rt.FontName = "Calibri";
rt.Size = 11;
// 可以繼續(xù)添加更多不同樣式的文本
var rt2 = comment.RichText.Add("不同樣式的文本");
rt2.Italic = true;

NPOI:同樣支持豐富的文本格式設(shè)置,通過(guò)創(chuàng)建 HSSFFont 對(duì)象并將其應(yīng)用到批注的 RichTextString 上。

// 創(chuàng)建字體對(duì)象
HSSFFont font = workbook.CreateFont();
font.FontName = "宋體";
font.FontHeightInPoints = 11;
font.Color = HSSFColor.Red.Index;
font.IsBold = true;
// 創(chuàng)建富文本字符串并應(yīng)用字體
HSSFRichTextString richString = new HSSFRichTextString("格式化的文本");
richString.ApplyFont(0, 5, font); // 對(duì)指定字符范圍應(yīng)用字體
comment.String = richString;

Interop:同樣支持豐富的格式設(shè)置,通過(guò)修改 Comment.Shape.TextFrame.Characters 對(duì)象的 Font 屬性來(lái)實(shí)現(xiàn)。

// 獲取批注對(duì)象
Comment comment = cell.Comment;
// 設(shè)置文本和格式
comment.Text("批注內(nèi)容");
comment.Shape.TextFrame.Characters().Font.Name = "宋體";
comment.Shape.TextFrame.Characters().Font.Size = 12;
comment.Shape.TextFrame.Characters().Font.Color = Color.Red;
comment.Shape.TextFrame.Characters().Font.Bold = true;

3. 設(shè)置批注框樣式(大小、可視性)

除了文本格式,批注框本身的外觀(如大小、是否始終顯示)也是可以控制的。

EPPlus:可以控制批注框的自動(dòng)調(diào)整大小和背景色等屬性。

var comment = cell.AddComment("批注內(nèi)容", "作者");
comment.AutoFit = true;      // 自動(dòng)調(diào)整大小
comment.BackgroundColor = Color.LightYellow;

NPOI:可以通過(guò) ClientAnchor 精確控制批注框的位置和大小,并設(shè)置其可視狀態(tài)。

// 創(chuàng)建錨點(diǎn),精確控制位置和大小
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, col1, row1, col2, row2);
HSSFComment comment = (HSSFComment)patriarch.CreateComment(anchor);
comment.Visible = true; // 設(shè)置批注始終可見(jiàn),而非懸停時(shí)顯示
comment.FillColor = HSSFColor.LightYellow.Index;

4. 讀取已有的批注

從已有的 Excel 文件中讀取批注信息,是數(shù)據(jù)解析和審核的重要一環(huán)。

EPPlusExcelWorksheet.Comments 集合提供了遍歷和訪問(wèn)所有批注的能力,可以輕松獲取批注文本、作者等信息。

foreach (ExcelComment comment in worksheet.Comments)
{
    string cellAddress = comment.Address; // 獲取批注所在單元格地址
    string text = comment.Text;           // 獲取批注文本
    string author = comment.Author;       // 獲取批注作者
    // 進(jìn)行處理...
}

NPOI:需要從 HSSFSheet 中獲取 HSSFComment 集合進(jìn)行遍歷,獲取文本和作者等屬性。

List<HSSFComment> comments = new List<HSSFComment>();
// 獲取sheet中所有的批注對(duì)象
foreach (HSSFShape shape in sheet.DrawingPatriarch.Children)
{
    if (shape is HSSFComment comment)
    {
        comments.Add(comment);
    }
}
foreach (HSSFComment comment in comments)
{
    string text = comment.String.ToString(); // 批注文本
    string author = comment.Author;          // 批注作者
    string address = comment.Row + ":" + comment.Column; // 獲取位置
}

批量處理與性能考量

在處理大量批注時(shí),性能是需要重點(diǎn)關(guān)注的。

  • 批量添加:使用循環(huán)逐批添加即可,關(guān)鍵是在循環(huán)外部創(chuàng)建好 Workbook 和 Worksheet 對(duì)象,避免重復(fù)創(chuàng)建。
  • 讀取批注EPPlus 的 Comments 集合在內(nèi)部使用了高效的數(shù)據(jù)結(jié)構(gòu),讀取性能較好。NPOI 則需從 DrawingPatriarch 中提取,HSSFShape 集合的訪問(wèn)性能稍遜一籌。

常見(jiàn)問(wèn)題與避坑指南

問(wèn)題解決方案
NPOI 批注無(wú)法顯示中文需確保為批注設(shè)置了中文字體,如 "宋體",并確保環(huán)境編碼支持中文。
EPPlus 批注顯示不全可嘗試設(shè)置 comment.AutoFit = true 讓批注框自適應(yīng),或手動(dòng)設(shè)置批注框的寬高。
Interop 內(nèi)存泄漏必須使用雙重循環(huán)確保 COM 對(duì)象被正確釋放,并對(duì)每個(gè)對(duì)象調(diào)用 Marshal.ReleaseComObject
庫(kù)的選擇如果需要處理 .xls 文件且要求免費(fèi),NPOI 是唯一的選擇。處理 .xlsx 且不介意授權(quán),EPPlus 是更現(xiàn)代化的選擇。

總結(jié)與建議

  • 首選 EPPlus:如果你是處理 .xlsx 格式,并且項(xiàng)目允許使用其許可協(xié)議,EPPlus 以其現(xiàn)代化的 API、強(qiáng)大的功能和卓越的性能,應(yīng)成為你的首選。
  • 備選 NPOI:如果項(xiàng)目有免費(fèi)、開(kāi)源的嚴(yán)格要求,或者需要兼容舊的 .xls 格式,NPOI 是一個(gè)成熟、可靠的備選方案。
  • 避免 Interop:除非你是在編寫一個(gè)需要精確模擬用戶操作的簡(jiǎn)單自動(dòng)化腳本,否則應(yīng)避免在生產(chǎn)環(huán)境中使用 Microsoft.Office.Interop.Excel,其穩(wěn)定性和性能問(wèn)題會(huì)帶來(lái)很多麻煩。

到此這篇關(guān)于C#代碼實(shí)現(xiàn)在Excel中添加或設(shè)置批注格式的文章就介紹到這了,更多相關(guān)C# Excel添加和設(shè)置批注格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)在Excel中添加篩選器并執(zhí)行篩選的操作

    C#實(shí)現(xiàn)在Excel中添加篩選器并執(zhí)行篩選的操作

    自動(dòng)篩選器是 Excel 中的一個(gè)基本但極其有用的功能,它可以讓你根據(jù)特定的條件來(lái)自動(dòng)隱藏和顯示你的數(shù)據(jù),當(dāng)有大量的數(shù)據(jù)需要處理時(shí),這個(gè)功能可以幫你快速找到你需要的信息,下面將介紹如何使用免費(fèi).NET Excel庫(kù)在Excel中添加、應(yīng)用和刪除自動(dòng)篩選器,需要的朋友可以參考下
    2024-05-05
  • C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱加密算法示例

    C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱加密算法示例

    這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱加密算法,結(jié)合實(shí)例形式分析了C#實(shí)現(xiàn)RSA加密的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • C#圓形頭像框制作并從數(shù)據(jù)庫(kù)讀取

    C#圓形頭像框制作并從數(shù)據(jù)庫(kù)讀取

    本文主要介紹了C#圓形頭像框制作并從數(shù)據(jù)庫(kù)讀取,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 基于.net中突破每客戶端兩個(gè)http連接限制的詳細(xì)介紹

    基于.net中突破每客戶端兩個(gè)http連接限制的詳細(xì)介紹

    本篇文章是對(duì).net中突破每客戶端兩個(gè)http連接限制進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Winform消除button按下出現(xiàn)的虛線簡(jiǎn)單實(shí)現(xiàn)方法

    Winform消除button按下出現(xiàn)的虛線簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了Winform消除button按下出現(xiàn)的虛線簡(jiǎn)單實(shí)現(xiàn)方法,通過(guò)重寫button設(shè)置Selectable參數(shù)實(shí)現(xiàn)該功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#實(shí)現(xiàn)讀取和設(shè)置文件與文件夾的權(quán)限

    C#實(shí)現(xiàn)讀取和設(shè)置文件與文件夾的權(quán)限

    這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)讀取和設(shè)置文件與文件夾的權(quán)限,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • C# Process.Start()系統(tǒng)找不到指定文件的問(wèn)題分析及解決

    C# Process.Start()系統(tǒng)找不到指定文件的問(wèn)題分析及解決

    文章內(nèi)容:文章描述了由于系統(tǒng)找不到可啟動(dòng)的exe文件,路徑出現(xiàn)問(wèn)題導(dǎo)致無(wú)法啟動(dòng)應(yīng)用程序的情況,作者通過(guò)修改應(yīng)用程序的啟動(dòng)路徑,將路徑中的“\\”改為“\”,從而解決了路徑問(wèn)題,使應(yīng)用程序能夠正常啟動(dòng)
    2025-11-11
  • C# 中如何利用lambda實(shí)現(xiàn)委托事件的掛接

    C# 中如何利用lambda實(shí)現(xiàn)委托事件的掛接

    在寫一個(gè)小程序的時(shí)候,碰到了這樣的問(wèn)題,需要用委托來(lái)掛接事件,但是又想在這事件中使用局部的變量,而委托一旦定義好后,掛接方就沒(méi)有辦法再添加額外的形參了。那有沒(méi)有什么辦法,可以實(shí)現(xiàn)呢
    2013-07-07
  • C#中通過(guò)Command模式實(shí)現(xiàn)Redo/Undo方案

    C#中通過(guò)Command模式實(shí)現(xiàn)Redo/Undo方案

    這篇文章介紹了C#中通過(guò)Command模式實(shí)現(xiàn)Redo/Undo方案的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#使用TextBox作數(shù)據(jù)輸入方法

    C#使用TextBox作數(shù)據(jù)輸入方法

    筆者最近需要上位機(jī)與下位機(jī)進(jìn)行數(shù)據(jù)交互,在廣泛參考大佬的資料后,較為完善地使用Textbox控件進(jìn)行數(shù)據(jù)輸入的功能。感興趣的可以了解一下
    2021-06-06

最新評(píng)論

昭觉县| 北票市| 深泽县| 谢通门县| 邵阳县| 环江| 五华县| 昂仁县| 磐安县| 金寨县| 华蓥市| 瓦房店市| 中卫市| 三亚市| 武功县| 青铜峡市| 贞丰县| 泰顺县| 饶平县| 临泉县| 化隆| 英山县| 鄂伦春自治旗| 奉新县| 马尔康县| 鄂托克前旗| 蓝山县| 宁城县| 临泉县| 巴林右旗| 交口县| 乌苏市| 逊克县| 靖江市| 清水县| 云龙县| 喜德县| 霍山县| 清原| 榆树市| 类乌齐县|