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

使用C#實現為Excel文檔添加水印

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

向 Excel 電子表格添加水印是一種常見方法,可用于品牌標識或標記文檔保密性。雖然 Microsoft Excel 本身沒有直接提供水印功能,但可以通過在工作表頁眉或頁腳插入圖片,或將圖片設置為背景的方式來實現類似效果。

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

準備開發(fā)環(huán)境

在開始之前,需要在 .NET 項目中引用相關 Excel 處理庫的 DLL 文件??梢酝ㄟ^ NuGet 安裝或從官方渠道下載后手動添加引用。

PM> Install-Package Spire.XLS

頁眉圖片水印 vs 背景圖片水印

頁眉圖片水印

優(yōu)點:

  • 水印會保留在打印輸出中,確保最終文檔中可見

缺點:

  • 在 Excel 的“普通視圖”中不可見,只能在“頁面布局”或“分頁預覽”中看到
  • 如果要將水印居中顯示,需要手動調整頁邊距,尤其是上邊距和左邊距

背景圖片水印

優(yōu)點:水印會鋪滿整個工作表區(qū)域,視覺效果更統(tǒng)一

缺點:不會出現在打印結果中,打印輸出時水印會消失

使用 C# 通過頁眉圖片向 Excel 添加水印

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

以下是在 C# 中通過頁眉圖片為 Excel 添加水印的步驟:

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

示例代碼如下:

using Spire.Xls;
using System.Drawing;

namespace 通過頁眉為Excel添加水印
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 對象
            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];

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

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

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

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

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

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

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

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

示例代碼如下:

using Spire.Xls;
using System.Drawing;

namespace 通過背景圖片為Excel添加水印
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 對象
            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];

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

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

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

知識擴展

向 Excel 文檔添加水印在 C# 中沒有單一的官方標準方法,通常需要通過模擬來實現,最穩(wěn)妥、功能最強大的方式是使用成熟的商業(yè)庫。

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

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

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

1.Aspose.Cells

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

1. 安裝 NuGet 包在“程序包管理器控制臺”中運行:

Install-Package Aspose.Cells

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

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

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

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

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

2.方案二:Spire.XLS

Spire.XLS 可以通過兩種方式實現水印效果:

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

public static void AddWatermarkWithSpire()
{
    Workbook workbook = new Workbook();
    workbook.LoadFromFile("input.xlsx");
    
    // 設置字體
    Font font = new Font("宋體", 40);
    string watermarkText = "內部使用";
    
    foreach (Worksheet sheet in workbook.Worksheets)
    {
        // 根據文本生成圖片水印
        Image img = DrawTextWatermark(watermarkText, font, Color.LightCoral, Color.White, 
                                      sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
        // 將圖片作為頁眉添加到工作表
        sheet.PageSetup.LeftHeaderImage = img;
        sheet.PageSetup.LeftHeader = "&amp;G";
        
        // 切換視圖模式以預覽水印效果
        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)建一個與工作表頁面大小相同的圖像
    Image img = new Bitmap((int)width, (int)height);
    Graphics drawing = Graphics.FromImage(img);
    
    // 計算文本尺寸并居中
    SizeF textSize = drawing.MeasureString(text, font);
    drawing.TranslateTransform(((int)width - textSize.Width) / 2, 
                                ((int)height - textSize.Height) / 2);
    
    // 設置文字顏色和背景填充
    drawing.DrawString(text, font, new SolidBrush(textColor), 0, 0);
    drawing.FillRectangle(new SolidBrush(backColor), 0, 0, img.Width, img.Height);
    
    // 釋放資源
    drawing.Dispose();
    return img;
}

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

備選與底層方案

3.EPPlus (開源)

EPPlus 可以將水印圖片插入到 Excel 文檔的頁眉或頁腳中,使其在打印時可見。

特別注意:EPPlus 從 5.0 版本起已轉為商業(yè)許可。這意味著如果你用于商業(yè)用途,需要購買許可證,否則會觸發(fā)限制。如果你的項目對成本極為敏感,且僅在非商業(yè)環(huán)境中使用,可以考慮尋找更早期的版本,但更推薦選擇上述商業(yè)庫或繼續(xù)使用免費方案 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];
        // 在頁眉居中位置插入圖片作為水印
        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 應用程序添加水印,但此方案高度不穩(wěn)定,極易出現資源泄漏,強烈不推薦在生產環(huán)境中使用。
  • Open XML SDK:能夠直接操作文檔底層 XML 結構,實現極高自由度的控制,但需要開發(fā)者對 Excel 文件格式有深入的了解,代碼實現極其復雜,調試成本高。

總結

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

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

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

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

相關文章

  • DevExpress TreeList 常見問題解決方法

    DevExpress TreeList 常見問題解決方法

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

    使用C#實現Windows組和用戶管理的示例代碼

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

    Winform使用FTP實現自動更新

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

    C#?單向鏈表的實現方法

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

    C#中GridView動態(tài)添加列的實現方法

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

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

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

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

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

    WPF中的ValidationRule實現參數綁定解決方案

    在WPF中,默認情況下,DataContext是通過可視化樹來傳遞的,父元素的DataContext會自動傳遞給其子元素,以便子元素可以訪問父元素的數據對象,這篇文章主要介紹了WPF中的ValidationRule實現參數綁定解決方案,需要的朋友可以參考下
    2023-08-08
  • WPF解決大量數據刷新時UI卡頓或效率低下問題的方法詳解

    WPF解決大量數據刷新時UI卡頓或效率低下問題的方法詳解

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

    關于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.

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

最新評論

偃师市| 青岛市| 吉首市| 呼伦贝尔市| 景宁| 德兴市| 罗田县| 徐闻县| 乐清市| 潼南县| 天门市| 朔州市| 山丹县| 从江县| 雷山县| 开阳县| 呼和浩特市| 丹江口市| 楚雄市| 辉南县| 沾益县| 永济市| 平果县| 阳高县| 辉县市| 彰化县| 瑞丽市| 黑河市| 新化县| 云南省| 临澧县| 澄江县| 京山县| 息烽县| 鹰潭市| 儋州市| 莒南县| 惠东县| 宁波市| 商河县| 大港区|