C#/VB.NET 在Excel中添加水印

科技资讯 投稿 10800 0 评论

C#/VB.NET 在Excel中添加水印

程序环境:

本次测试时,在程序中引入 Spire.XLS.dll 文件。

方法1:

Free Spire.XLS for .NET​​ 下载到本地,解压,找到 BIN 文件夹下的 Spire.XLS.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。

方法2::

NuGet​​安装。可通过以下 2 种方法安装:

 2. 将以下内容复制到 PM 控制台安装。

在Excel中添加水印

以下是详细步骤:

    创建Workbook类的实例。
  • 使用 Workbook.LoadFromFile( 方法加载 Excel 文件。
  • 创建字体并定义文本。
  • 遍历 Excel 文件中的所有工作表。
  • 使用 DrawWatermarkImage( 方法创建基于文本的水印图像。
  • 通过Worksheet.PageSetup.LeftHeaderImage 属性将图片设置为每个工作表左页眉的图像源。
  • 将 Worksheet.PageSetup.LeftHeader 属性设置为“&G”,在左侧标题部分显示图像。
  • 将工作表的查看模式更改为页面布局,以便查看水印。
  • 使用 Workbook.SaveToFile( 方法保存结果文件。

完整代码

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((intwidth, (intheight;
            //从图像创建一个 Graphics 对象
            Graphics drawing = Graphics.FromImage(img;

            //获取文字的大小
            SizeF textSize = drawing.MeasureString(text, font;

            //通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
            drawing.TranslateTransform(((intwidth - textSize.Width / 2, ((intheight - textSize.Height / 2;

            //应用旋转
            drawing.RotateTransform(-45;

            //通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
            drawing.TranslateTransform(-((intwidth - textSize.Width / 2, -((intheight - textSize.Height / 2;

            //绘制背景
            drawing.Clear(backColor;

            //为文本创建画笔
            Brush textBrush = new SolidBrush(textColor;

            //将文本绘制到图形的中心位置
            drawing.DrawString(text, font, textBrush, ((intwidth - textSize.Width / 2, ((intheight - 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中添加水印

赞同 (52) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽