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

使用C#實(shí)現(xiàn)為Excel文檔添加水印

 更新時(shí)間:2026年05月26日 08:16:41   作者:2501_93070778  
向 Excel 電子表格添加水印是一種常見(jiàn)方法,可用于品牌標(biāo)識(shí)或標(biāo)記文檔保密性,本文演示了如何使用 C# 通過(guò)背景圖片為 Excel 工作表添加水印效果,有需要的小伙伴可以參考下

向 Excel 電子表格添加水印是一種常見(jiàn)方法,可用于品牌標(biāo)識(shí)或標(biāo)記文檔保密性。雖然 Microsoft Excel 本身沒(méi)有直接提供水印功能,但可以通過(guò)在工作表頁(yè)眉或頁(yè)腳插入圖片,或?qū)D片設(shè)置為背景的方式來(lái)實(shí)現(xiàn)類(lèi)似效果。

本文將介紹如何在 C# 中通過(guò)頁(yè)眉圖片或背景圖片,為 Excel 添加水印效果。

準(zhǔn)備開(kāi)發(fā)環(huán)境

在開(kāi)始之前,需要在 .NET 項(xiàng)目中引用相關(guān) Excel 處理庫(kù)的 DLL 文件。可以通過(guò) NuGet 安裝或從官方渠道下載后手動(dòng)添加引用。

PM> Install-Package Spire.XLS

頁(yè)眉圖片水印 vs 背景圖片水印

頁(yè)眉圖片水印

優(yōu)點(diǎn):

  • 水印會(huì)保留在打印輸出中,確保最終文檔中可見(jiàn)

缺點(diǎn):

  • 在 Excel 的“普通視圖”中不可見(jiàn),只能在“頁(yè)面布局”或“分頁(yè)預(yù)覽”中看到
  • 如果要將水印居中顯示,需要手動(dòng)調(diào)整頁(yè)邊距,尤其是上邊距和左邊距

背景圖片水印

優(yōu)點(diǎn):水印會(huì)鋪滿(mǎn)整個(gè)工作表區(qū)域,視覺(jué)效果更統(tǒng)一

缺點(diǎn):不會(huì)出現(xiàn)在打印結(jié)果中,打印輸出時(shí)水印會(huì)消失

使用 C# 通過(guò)頁(yè)眉圖片向 Excel 添加水印

Spire.XLS for .NET 提供了 PageSetup 類(lèi),可用于控制打印工作表的外觀和布局相關(guān)設(shè)置。該類(lèi)包含 CenterHeader 和 CenterHeaderImage 屬性,可用于在頁(yè)眉的居中區(qū)域設(shè)置圖片。

以下是在 C# 中通過(guò)頁(yè)眉圖片為 Excel 添加水印的步驟:

  • 創(chuàng)建 Workbook 對(duì)象
  • 從指定文件路徑加載 Excel 文檔
  • 使用 Image.FromFile() 方法加載圖片
  • 從工作簿中獲取指定工作表
  • 通過(guò)將 Worksheet.PageSetup.CenterHeader 屬性設(shè)置為 “&G”,在頁(yè)眉中添加圖片占位符
  • 使用 Worksheet.PageSetup.CenterHeaderImage 屬性將圖片應(yīng)用到頁(yè)眉居中位置
  • 將工作簿保存為新的 Excel 文件

示例代碼如下:

using Spire.Xls;
using System.Drawing;

namespace 通過(guò)頁(yè)眉為Excel添加水印
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 對(duì)象
            Workbook workbook = new Workbook();

            // 加載 Excel 文檔
            workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

            // 加載圖片文件
            Image image = Image.FromFile("C:\\Users\\Administrator\\Desktop\\confidential.png");

            // 遍歷文件中的所有工作表
            for (int i = 0; i < workbook.Worksheets.Count; i++)
            {
                // 獲取指定工作表
                Worksheet worksheet = workbook.Worksheets[i];

                // 在頁(yè)眉中間區(qū)域添加圖片占位符
                worksheet.PageSetup.CenterHeader = "&G";

                // 將圖片添加到頁(yè)眉中間位置
                worksheet.PageSetup.CenterHeaderImage = image;
            }

            // 保存結(jié)果文件
            workbook.SaveToFile("AddWatermark.xlsx", ExcelVersion.Version2016);

            // 釋放資源
            workbook.Dispose();
        }
    }
}

使用 C# 通過(guò)背景圖片為 Excel 添加水印

在 Spire.XLS for .NET 中,PageSetup 類(lèi)提供了 BackgroundImage 屬性,可用于獲取或設(shè)置工作表的背景圖片,從而實(shí)現(xiàn)水印效果。

以下是在 C# 中通過(guò)背景圖片為 Excel 添加水印的操作步驟:

  • 創(chuàng)建 Workbook 對(duì)象
  • 從指定路徑加載 Excel 文件
  • 加載圖片文件,并轉(zhuǎn)換為 Bitmap 格式
  • 獲取工作簿中的指定工作表
  • 通過(guò) Worksheet.PageSetup.BackgroundImage 屬性將圖片設(shè)置為工作表背景
  • 將結(jié)果保存為新的 Excel 文件

示例代碼如下:

using Spire.Xls;
using System.Drawing;

namespace 通過(guò)背景圖片為Excel添加水印
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 對(duì)象
            Workbook workbook = new Workbook();

            // 加載 Excel 文檔
            workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

            // 加載圖片文件
            Bitmap bitmapImage = new Bitmap(Image.FromFile("C:\\Users\\Administrator\\Desktop\\sample.png"));

            // 遍歷文件中的所有工作表
            for (int i = 0; i < workbook.Worksheets.Count; i++)
            {
                // 獲取指定工作表
                Worksheet worksheet = workbook.Worksheets[i];

                // 將圖片設(shè)置為工作表背景
                worksheet.PageSetup.BackgoundImage = bitmapImage;
            }

            // 保存結(jié)果文件
            workbook.SaveToFile("AddWatermark.xlsx", ExcelVersion.Version2016);

            // 釋放資源
            workbook.Dispose();
        }
    }
}

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

向 Excel 文檔添加水印在 C# 中沒(méi)有單一的官方標(biāo)準(zhǔn)方法,通常需要通過(guò)模擬來(lái)實(shí)現(xiàn),最穩(wěn)妥、功能最強(qiáng)大的方式是使用成熟的商業(yè)庫(kù)。

主流方案可分為核心推薦方案和備選與底層方案,以下分別介紹。

對(duì)于企業(yè)級(jí)應(yīng)用,首選 Aspose.Cells 或 Spire.XLS,穩(wěn)定高效且功能全面。若對(duì)成本敏感且水印需求簡(jiǎn)單,可優(yōu)先考慮 EPPlus。

核心推薦:使用商業(yè)庫(kù)

1.Aspose.Cells

Aspose.Cells 可以精準(zhǔn)地將藝術(shù)字 (WordArt) 添加到工作表作為水印,并調(diào)整其填充色、透明度等,實(shí)現(xiàn)最佳效果。

1. 安裝 NuGet 包在“程序包管理器控制臺(tái)”中運(yùn)行:

Install-Package Aspose.Cells

2. 添加文本水印的完整代碼

using Aspose.Cells;
using Aspose.Cells.Drawing;
using System.Drawing;

public static void AddTextWatermarkWithAspose()
{
    // 1. 創(chuàng)建工作簿對(duì)象(也可直接加載已有文件)
    Workbook workbook = new Workbook();
    
    // 2. 獲取第一個(gè)工作表
    Worksheet sheet = workbook.Worksheets[0];
    
    // 3. 添加藝術(shù)字形狀作為水印
    // AddTextEffect(預(yù)設(shè)效果, 水印文字, 字體名, 字號(hào), 字體傾斜, 粗體, 上偏移, 左偏移, 高度, 寬度, 旋轉(zhuǎn)角度, ZOrder)
    Aspose.Cells.Drawing.Shape watermark = sheet.Shapes.AddTextEffect(
        MsoPresetTextEffect.TextEffect1,
        "機(jī)密文檔",
        "Arial Black",
        50,
        false,
        true,
        18, 8, 
        1, 1,
        130, 800
    );
    
    // 4. 設(shè)置水印的填充屬性
    watermark.FillFormat.SetOneColorGradient(Color.Red, 0.9, GradientStyleType.Horizontal, 1);
    watermark.FillFormat.Transparency = 0.9;
    
    // 5. 使邊框不可見(jiàn)
    watermark.LineFormat.IsVisible = false;
    
    // 6. 保存工作簿
    workbook.Save("WatermarkedWorkbook.xlsx");
}

該方法通過(guò) AddTextEffect() 添加藝術(shù)字,并調(diào)整填充色和透明度來(lái)模擬文本水印,功能強(qiáng)大且效果專(zhuān)業(yè)。其核心參數(shù) ZOrder 為 800 表示水印層疊于正文之上但透明度極高,不影響正常編輯。

支持與資源上述代碼基于 Aspose.Cells for .NET API。如果在開(kāi)發(fā)中遇到問(wèn)題,可以查閱官方文檔,或訪(fǎng)問(wèn)其支持論壇尋求幫助。

2.方案二:Spire.XLS

Spire.XLS 可以通過(guò)兩種方式實(shí)現(xiàn)水印效果:

  • 插入藝術(shù)字(類(lèi)似 Aspose):使用 Shapes.AddTextEffect() 方法;
  • 設(shè)置頁(yè)面布局模式(推薦):利用頁(yè)眉圖片模擬水印,既能保證水印在各視圖中可見(jiàn)又不會(huì)干擾用戶(hù)對(duì)單元格的編輯,適合批量生成需要在打印時(shí)顯示水印的文檔。
using Spire.Xls;
using System.Drawing;

public static void AddWatermarkWithSpire()
{
    Workbook workbook = new Workbook();
    workbook.LoadFromFile("input.xlsx");
    
    // 設(shè)置字體
    Font font = new Font("宋體", 40);
    string watermarkText = "內(nèi)部使用";
    
    foreach (Worksheet sheet in workbook.Worksheets)
    {
        // 根據(jù)文本生成圖片水印
        Image img = DrawTextWatermark(watermarkText, font, Color.LightCoral, Color.White, 
                                      sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
        // 將圖片作為頁(yè)眉添加到工作表
        sheet.PageSetup.LeftHeaderImage = img;
        sheet.PageSetup.LeftHeader = "&amp;G";
        
        // 切換視圖模式以預(yù)覽水印效果
        sheet.ViewMode = ViewMode.Layout;
    }
    
    workbook.SaveToFile("output.xlsx");
}

private static Image DrawTextWatermark(string text, Font font, Color textColor, 
                                         Color backColor, double height, double width)
{
    // 創(chuàng)建一個(gè)與工作表頁(yè)面大小相同的圖像
    Image img = new Bitmap((int)width, (int)height);
    Graphics drawing = Graphics.FromImage(img);
    
    // 計(jì)算文本尺寸并居中
    SizeF textSize = drawing.MeasureString(text, font);
    drawing.TranslateTransform(((int)width - textSize.Width) / 2, 
                                ((int)height - textSize.Height) / 2);
    
    // 設(shè)置文字顏色和背景填充
    drawing.DrawString(text, font, new SolidBrush(textColor), 0, 0);
    drawing.FillRectangle(new SolidBrush(backColor), 0, 0, img.Width, img.Height);
    
    // 釋放資源
    drawing.Dispose();
    return img;
}

此方法通過(guò)自定義 DrawTextWatermark 函數(shù)將文本動(dòng)態(tài)生成為圖像,然后設(shè)置為頁(yè)眉圖片,實(shí)現(xiàn)了“打印即顯示”的水印效果。

備選與底層方案

3.EPPlus (開(kāi)源)

EPPlus 可以將水印圖片插入到 Excel 文檔的頁(yè)眉或頁(yè)腳中,使其在打印時(shí)可見(jiàn)。

特別注意:EPPlus 從 5.0 版本起已轉(zhuǎn)為商業(yè)許可。這意味著如果你用于商業(yè)用途,需要購(gòu)買(mǎi)許可證,否則會(huì)觸發(fā)限制。如果你的項(xiàng)目對(duì)成本極為敏感,且僅在非商業(yè)環(huán)境中使用,可以考慮尋找更早期的版本,但更推薦選擇上述商業(yè)庫(kù)或繼續(xù)使用免費(fèi)方案 Spire.XLS。

using OfficeOpenXml;
using System.IO;
public static void AddWatermarkWithEPPlus()
{
    using (ExcelPackage package = new ExcelPackage(new FileInfo("input.xlsx")))
    {
        var worksheet = package.Workbook.Worksheets[0];
        // 在頁(yè)眉居中位置插入圖片作為水印
        worksheet.HeaderFooter.OddHeader.InsertPicture(
            new FileInfo("watermark.png"), 
            PictureAlignment.Centered
        );
        worksheet.HeaderFooter.EvenHeader.InsertPicture(
            new FileInfo("watermark.png"), 
            PictureAlignment.Centered
        );
        package.Save();
    }
}

4.Interop / Open XML SDK

  • Microsoft Office Interop:直接在代碼中操作 Excel 應(yīng)用程序添加水印,但此方案高度不穩(wěn)定,極易出現(xiàn)資源泄漏,強(qiáng)烈不推薦在生產(chǎn)環(huán)境中使用。
  • Open XML SDK:能夠直接操作文檔底層 XML 結(jié)構(gòu),實(shí)現(xiàn)極高自由度的控制,但需要開(kāi)發(fā)者對(duì) Excel 文件格式有深入的了解,代碼實(shí)現(xiàn)極其復(fù)雜,調(diào)試成本高。

總結(jié)

本文演示了如何使用 C# 通過(guò)背景圖片為 Excel 工作表添加水印效果。整體實(shí)現(xiàn)思路是利用 Spire.XLS 提供的 Workbook 和 PageSetup 功能,將圖片設(shè)置為工作表的背景,從而在視覺(jué)上形成水印效果。

實(shí)現(xiàn)流程主要包括:先創(chuàng)建 Workbook 對(duì)象并加載目標(biāo) Excel 文件,然后讀取圖片并轉(zhuǎn)換為 Bitmap 格式。接著遍歷工作簿中的所有工作表,將背景圖片應(yīng)用到每個(gè) Sheet 的 PageSetup 屬性中,最后保存為新的 Excel 文件并釋放資源。

這種方式可以快速為多個(gè)工作表統(tǒng)一添加背景水印,適用于需要批量標(biāo)識(shí)文檔或進(jìn)行品牌標(biāo)注的場(chǎng)景。不過(guò)需要注意的是,背景圖片水印在打印時(shí)通常不會(huì)被保留,因此更適合用于屏幕展示場(chǎng)景。

到此這篇關(guān)于使用C#實(shí)現(xiàn)為Excel文檔添加水印的文章就介紹到這了,更多相關(guān)C# Excel添加水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • DevExpress TreeList 常見(jiàn)問(wèn)題解決方法

    DevExpress TreeList 常見(jiàn)問(wèn)題解決方法

    這篇文章主要介紹了DevExpress TreeList 常見(jiàn)問(wèn)題解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 使用C#實(shí)現(xiàn)Windows組和用戶(hù)管理的示例代碼

    使用C#實(shí)現(xiàn)Windows組和用戶(hù)管理的示例代碼

    這篇文章主要介紹了使用C#實(shí)現(xiàn)Windows組和用戶(hù)管理的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • Winform使用FTP實(shí)現(xiàn)自動(dòng)更新

    Winform使用FTP實(shí)現(xiàn)自動(dòng)更新

    這篇文章主要為大家詳細(xì)介紹了Winform使用FTP實(shí)現(xiàn)自動(dòng)更新,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C#?單向鏈表的實(shí)現(xiàn)方法

    C#?單向鏈表的實(shí)現(xiàn)方法

    本文介紹了C#中單向鏈表的基本概念、節(jié)點(diǎn)結(jié)構(gòu)以及基本操作,包括查找、插入和刪除節(jié)點(diǎn)的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法

    C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法,涉及C#中GridView的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#屏幕錄制中遇到黑屏問(wèn)題的原因和解決方法

    C#屏幕錄制中遇到黑屏問(wèn)題的原因和解決方法

    本文揭示了C#屏幕錄制開(kāi)發(fā)中常見(jiàn)的黑屏問(wèn)題根源,指出關(guān)鍵在于正確處理系統(tǒng)資源和權(quán)限而非簡(jiǎn)單調(diào)用COM組件,作者通過(guò)三重境界逐步深入,需要的朋友可以參考下
    2025-10-10
  • 在C#中獲取文件大小的多種方法

    在C#中獲取文件大小的多種方法

    本文介紹了在C#中獲取文件大小的幾種常用方法,包括使用FileInfo類(lèi)、File靜態(tài)類(lèi)、FileStream以及異步方法,每種方法都有其適用場(chǎng)景和優(yōu)缺點(diǎn),選擇最適合的方法取決于具體需求,需要的朋友可以參考下
    2026-02-02
  • WPF中的ValidationRule實(shí)現(xiàn)參數(shù)綁定解決方案

    WPF中的ValidationRule實(shí)現(xiàn)參數(shù)綁定解決方案

    在WPF中,默認(rèn)情況下,DataContext是通過(guò)可視化樹(shù)來(lái)傳遞的,父元素的DataContext會(huì)自動(dòng)傳遞給其子元素,以便子元素可以訪(fǎng)問(wèn)父元素的數(shù)據(jù)對(duì)象,這篇文章主要介紹了WPF中的ValidationRule實(shí)現(xiàn)參數(shù)綁定解決方案,需要的朋友可以參考下
    2023-08-08
  • WPF解決大量數(shù)據(jù)刷新時(shí)UI卡頓或效率低下問(wèn)題的方法詳解

    WPF解決大量數(shù)據(jù)刷新時(shí)UI卡頓或效率低下問(wèn)題的方法詳解

    在開(kāi)發(fā)WPF數(shù)據(jù)密集型應(yīng)用時(shí),開(kāi)發(fā)者最常遇到的挑戰(zhàn)就是:??當(dāng)需要頻繁更新或顯示大量數(shù)據(jù)時(shí),UI界面會(huì)出現(xiàn)嚴(yán)重的卡頓、閃爍,甚至失去響應(yīng)??,本文將系統(tǒng)性地分析其根本原因,并提供從基礎(chǔ)到高級(jí)的一系列解決方案和實(shí)戰(zhàn)代碼,需要的朋友可以參考下
    2025-09-09
  • 關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.NET4中的使用介紹方法

    關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.

    本篇文章,小編為大家介紹關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.NET4中的使用介紹方法,有需要的朋友可以參考一下
    2013-04-04

最新評(píng)論

恩平市| 江门市| 安义县| 龙里县| 大埔区| 象山县| 泌阳县| 绥宁县| 华容县| 东阿县| 洛宁县| 安仁县| 岳阳市| 平遥县| 临泽县| 盐亭县| 武宁县| 伽师县| 万宁市| 鄱阳县| 长宁区| 敖汉旗| 伊通| 仁布县| 都兰县| 仁化县| 长垣县| 上饶县| 博乐市| 来宾市| 高淳县| 怀化市| 互助| 资源县| 邳州市| 平邑县| 四平市| 尼木县| 新绛县| 高邮市| 廉江市|