使用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 文件并释放资源。

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

相关推荐
SunnyDays10112 小时前
使用 Java 高效管理 Excel 批注:添加、读取、修改和删除
java·开发语言·excel
福兮说2 小时前
AI 把工号整理成 Excel 后,前面的 0 还在吗?我会先核对这三列
excel
工具派21 小时前
JSON转Excel后18位订单号不对了?数字精度与类型边界实测
json·excel
Allstar_432 天前
制造业研发管理数字化:从 Excel 到专业 APQP 系统的架构选型思考
架构·excel
驾驭人生2 天前
NET NPOI 实战:生成带下拉、数据校验、必填标红的 Excel 导入模板
excel
泡海椒2 天前
把 TRANSFORM 做成可扩展能力:JQuick-Excel 的函数与 SPI 调用链
驱动开发·excel
2601_962780912 天前
2027采购岗准备:大数据管理与应用专业如何把Excel、SQL变成业务能力
excel
开开心心_Every2 天前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
泡海椒2 天前
Spring 项目中如何组织 JQuick-Excel 的 XML 与 Bean
xml·spring·excel