使用C#代码向 Excel 文档添加水印

向 Excel 电子表格添加水印是一种常见方法,可用于品牌标识或标记文档保密性。虽然 Microsoft Excel 本身没有直接提供水印功能,但可以通过在工作表页眉或页脚插入图片,或将图片设置为背景的方式来实现类似效果。

本文将介绍如何在 C# 中通过页眉图片或背景图片,为 Excel 添加水印效果。

准备开发环境

在开始之前,需要在 .NET 项目中引用相关 Excel 处理库的 DLL 文件。可以通过 NuGet 安装或从官方渠道下载后手动添加引用。

cs 复制代码
PM> Install-Package Spire.XLS

页眉图片水印 vs 背景图片水印

页眉图片水印

优点:

  • 水印会保留在打印输出中,确保最终文档中可见

缺点:

  • 在 Excel 的"普通视图"中不可见,只能在"页面布局"或"分页预览"中看到
  • 如果要将水印居中显示,需要手动调整页边距,尤其是上边距和左边距

背景图片水印

优点:

  • 水印会铺满整个工作表区域,视觉效果更统一

缺点:

  • 不会出现在打印结果中,打印输出时水印会消失

使用 C# 通过页眉图片向 Excel 添加水印

Spire.XLS for .NET 提供了 PageSetup 类,可用于控制打印工作表的外观和布局相关设置。该类包含 CenterHeader 和 CenterHeaderImage 属性,可用于在页眉的居中区域设置图片。

以下是在 C# 中通过页眉图片为 Excel 添加水印的步骤:

  • 创建 Workbook 对象
  • 从指定文件路径加载 Excel 文档
  • 使用 Image.FromFile() 方法加载图片
  • 从工作簿中获取指定工作表
  • 通过将 Worksheet.PageSetup.CenterHeader 属性设置为 "&G",在页眉中添加图片占位符
  • 使用 Worksheet.PageSetup.CenterHeaderImage 属性将图片应用到页眉居中位置
  • 将工作簿保存为新的 Excel 文件

示例代码如下:

cs 复制代码
using Spire.Xls;
using System.Drawing;

namespace 通过页眉为Excel添加水印
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 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];

                // 在页眉中间区域添加图片占位符
                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 添加水印的操作步骤:

  • 创建 Workbook 对象
  • 从指定路径加载 Excel 文件
  • 加载图片文件,并转换为 Bitmap 格式
  • 获取工作簿中的指定工作表
  • 通过 Worksheet.PageSetup.BackgroundImage 属性将图片设置为工作表背景
  • 将结果保存为新的 Excel 文件

示例代码如下:

cs 复制代码
using Spire.Xls;
using System.Drawing;

namespace 通过背景图片为Excel添加水印
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 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();
        }
    }
}

总结

本文演示了如何使用 C# 通过背景图片为 Excel 工作表添加水印效果。整体实现思路是利用 Spire.XLS 提供的 Workbook 和 PageSetup 功能,将图片设置为工作表的背景,从而在视觉上形成水印效果。

实现流程主要包括:先创建 Workbook 对象并加载目标 Excel 文件,然后读取图片并转换为 Bitmap 格式。接着遍历工作簿中的所有工作表,将背景图片应用到每个 Sheet 的 PageSetup 属性中,最后保存为新的 Excel 文件并释放资源。

这种方式可以快速为多个工作表统一添加背景水印,适用于需要批量标识文档或进行品牌标注的场景。不过需要注意的是,背景图片水印在打印时通常不会被保留,因此更适合用于屏幕展示场景。

相关推荐
幸运小圣17 小时前
SheetJS(xlsx)导出 Excel 全流程(新手版)【SheetJS】
javascript·excel
Metaphor69217 小时前
使用 Python 将 HTML 转换为 Excel
python·html·excel
wtsolutions19 小时前
Sheet-to-Doc Excel 插件版正式发布,微软 AppSource 直接安装
microsoft·excel
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 天前
java实现excel导入、下载模板方法
java·开发语言·excel
qq_546937272 天前
office和WPS平替软件,可以打开Word_Excel_PPT
word·excel·wps
Teable任意门互动2 天前
拆解 Teable 背后研发主体,开源多维表格平台实力与落地案例
开发语言·开源·excel·飞书·开源软件
Cloud_Shy6182 天前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十二章 用户定义函数 下篇)
python·plotly·数据分析·excel·numpy·pandas
Cloud_Shy6183 天前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十二章 用户定义函数 中篇)
python·数据分析·excel·pandas
udc小白3 天前
Excel实现LSTM示例
人工智能·深度学习·神经网络·机器学习·excel·lstm