C#/VB.NET 如何在 Excel 中添加水印
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#/VB.NET 如何在 Excel 中添加水印相关的知识,希望对你有一定的参考价值。
在工作中,为了防止文件被随意复制和传播,通常我们会选择在文档中添加水印来对文件进行有效保护。文字水印是比较常见的一种保护手段,它可以有效防止文件被任意复制和随意打印传播。不过,Excel 默认并没有水印功能。此时,我们可以把插入的艺术字作为水印,将水印和工作表融合在一起,以防止文档被复制传播。那么如何轻松实现在 Excel 中添加水印呢?别着急,我给大家整理了一个高效便捷的方法,通过编程方式达到此目的。下面是我整理的具体步骤,并附上 C#/VB.NET 代码供大家参考。
程序环境:
本次测试时,在程序中引入 Spire.XLS.dll 文件。
方法 1:
将 Free Spire.XLS for .NET 下载到本地,解压,找到 BIN 文件夹下的 Spire.XLS.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。
方法 2:
通过NuGet安装。可通过以下 2 种方法安装:
- 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.XLS”,点击“安装”。等待程序安装完成。
- 将以下内容复制到 PM 控制台安装。
Install-Package FreeSpire.XLS -Version 12.7 在 Excel 中添加水印
在 Excel 中添加水印
以下是详细步骤:
- 创建 Workbook 类的实例。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 创建字体并定义文本。
- 遍历 Excel 文件中的所有工作表。
- 使用 DrawWatermarkImage() 方法创建基于文本的水印图像。
- 通过 Worksheet.PageSetup.LeftHeaderImage 属性将图片设置为每个工作表左页眉的图像源。
- 将 Worksheet.PageSetup.LeftHeader 属性设置为“&G”,在左侧标题部分显示图像。
- 将工作表的查看模式更改为页面布局,以便查看水印。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
完整代码
C#
using Spire.Xls;
using System.Drawing;
namespace AddWatermark
class Program
static void Main(string[] args)
//初始化 Workbook 类的实例并加载 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("示例文档.xlsx");
//创建字体
Font font = new Font("宋体", 40);
//定义文本
string watermark = "内部使用";
//遍历文件中的所有工作表
foreach (Worksheet sheet in workbook.Worksheets)
//调用 DrawWatermarkImage() 方法根据文本创建图像
Image imgWtrmrk = DrawWatermarkImage(watermark, font, Color.LightCoral, Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
//将图像添加到每个工作表的左侧标题部分
sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
sheet.PageSetup.LeftHeader = "&G";
//将工作表的查看模式更改为页面布局以查看水印
sheet.ViewMode = ViewMode.Layout;
//保存结果文件
workbook.SaveToFile("添加水印.xlsx", ExcelVersion.Version2013);
private static Image DrawWatermarkImage(string text, Font font, Color textColor, Color backColor, double height, double width)
//创建具有指定宽度和高度的图像
Image img = new Bitmap((int)width, (int)height);
//从图像创建一个 Graphics 对象
Graphics drawing = Graphics.FromImage(img);
//获取文字的大小
SizeF textSize = drawing.MeasureString(text, font);
//通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
drawing.TranslateTransform(((int)width - textSize.Width) / 2, ((int)height - textSize.Height) / 2);
//应用旋转
drawing.RotateTransform(-45);
//通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
drawing.TranslateTransform(-((int)width - textSize.Width) / 2, -((int)height - textSize.Height) / 2);
//绘制背景
drawing.Clear(backColor);
//为文本创建画笔
Brush textBrush = new SolidBrush(textColor);
//将文本绘制到图形的中心位置
drawing.DrawString(text, font, textBrush, ((int)width - textSize.Width) / 2, ((int)height - textSize.Height) / 2);
drawing.Save();
return img;
VB.NET
Imports Spire.Xls
Imports System.Drawing
Namespace AddWatermark
Friend Class Program
Private Shared Sub Main(ByVal args As String())
初始化 Workbook 类的新实例并加载 Excel 文件
Dim workbook As Workbook = New Workbook()
workbook.LoadFromFile("示例文档.xlsx")
创建字体
Dim font As Font = New Font("宋体", 40)
定义文本
Dim watermark = "内部使用"
遍历文件中的所有工作表
For Each sheet As Worksheet In workbook.Worksheets
调用 DrawWatermarkImage() 方法根据文本创建图像
Dim imgWtrmrk As Image = DrawWatermarkImage(watermark, font, Color.LightCoral, Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth)
将图像添加到每个工作表的左侧标题部分
sheet.PageSetup.LeftHeaderImage = imgWtrmrk
sheet.PageSetup.LeftHeader = "&G"
将工作表的查看模式更改为页面布局以查看水印
sheet.ViewMode = ViewMode.Layout
Next
保存结果文件
workbook.SaveToFile("添加水印.xlsx", ExcelVersion.Version2013)
End Sub
Private Shared Function DrawWatermarkImage(ByVal text As String, ByVal font As Font, ByVal textColor As Color, ByVal backColor As Color, ByVal height As Double, ByVal width As Double) As Image
创建具有指定宽度和高度的图像
Dim img As Image = New Bitmap(width, height)
从图像创建一个 Graphics 对象
Dim drawing As Graphics = Graphics.FromImage(img)
获取文字的大小
Dim textSize As SizeF = drawing.MeasureString(text, font)
通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
drawing.TranslateTransform((CInt(width) - textSize.Width) / 2, (CInt(height) - textSize.Height) / 2)
应用旋转
drawing.RotateTransform(-45)
通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
drawing.TranslateTransform(-(CInt(width) - textSize.Width) / 2, -(CInt(height) - textSize.Height) / 2)
绘制背景
drawing.Clear(backColor)
为文本创建画笔
Dim textBrush As Brush = New SolidBrush(textColor)
将文本绘制到图形的中心位置
drawing.DrawString(text, font, textBrush, (CInt(width) - textSize.Width) / 2, (CInt(height) - textSize.Height) / 2)
drawing.Save()
Return img
End Function
End Class
End Namespace
效果图
—本文完—
以上是关于C#/VB.NET 如何在 Excel 中添加水印的主要内容,如果未能解决你的问题,请参考以下文章