博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 添加Excel水印
阅读量:6975 次
发布时间:2019-06-27

本文共 4489 字,大约阅读时间需要 14 分钟。

我们知道,在Excel中不容易直接实现添加水印的效果,但是Excel数据表格作为重要的办公文档之一,通过添加水印来实现防伪或者声明资料是很有必要的。鉴于此,本文将介绍如何给Excel工作表添加水印的方法。这里分以下两种情况:

  1. 通过添加背景图片来实现水印效果
  2. 通过页眉页脚添加图片水印效果。下面作详细介绍
    所用工具:Free Spire.XLS for .NET
    PS:下载安装该组件,在项目程序中添加引用该安装目录下的dll文件,并添加如下命名空间:
    using System;using Spire.Xls;using System.Drawing;

方法一:添加背景图片式文本水印

static void Main(string[] args)        {           //创建一个Workbook类对象,并加载需要添加水印的Excel文档            Workbook workbook = new Workbook();          workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");            //初始化一个Font类字体对象,设置字体字号            Font font = new Font("宋体", 36);            //初始化一个String类型变量,并赋值“仅内部使用”作为水印文字            String watermark = "仅内部使用";            //设置背景图片为水印//遍历工作簿中所有工作表            foreach (Worksheet sheet in workbook.Worksheets)            {                //调用DrawText()方法绘制文本为图片                Image imgWtrmrk = DrawText(watermark, font, Color.LightCoral, Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);                //将水印图片设置成位图                sheet.PageSetup.BackgoundImage = imgWtrmrk as Bitmap;            }            //保存文档并预览            workbook.SaveToFile("result.xlsx", ExcelVersion.Version2010);            System.Diagnostics.Process.Start("result.xlsx");        }        //自定义方法将文本绘制成图片并设置文本格式,包括字体,字体颜色、背景色、字体大小等        private static Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor, double height, double width)        {            //将用来作为水印的文本返回为图片并设置其展示样式            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.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;        }

需要注意的是,这种方法添加的背景水印无法实现打印效果,但日常无纸化办公环境中,该方法也能很好的满足需求。

水印添加效果:
C# 添加Excel水印

方法二、添加页眉图片水印

static void Main(string[] args)        {            //创建一个Workbook类对象并加载Excel文档            Workbook workbook = new Workbook();                                       workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");            //初始化一个Font类字体对象,设置字体字号            Font font = new Font("宋体", 36);            //初始化一个String类型变量,并赋值“内部资料”作为水印文字            String watermark = "内部资料";            //在页眉中插入图片作为模拟水印            //遍历工作簿中所有工作表            foreach (Worksheet sheet in workbook.Worksheets)            {                //调用DrawText()方法创建的图片                Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);                //插入图片作为LeftHeaderImage                sheet.PageSetup.LeftHeaderImage = imgWtrmrk;                sheet.PageSetup.LeftHeader = "&G";                //设置视图模式,此方法中页眉水印仅在Layout模式下直观可见                sheet.ViewMode = ViewMode.Layout;            }            //保存文档并预览            workbook.SaveToFile("result2.xlsx", ExcelVersion.Version2010);            System.Diagnostics.Process.Start("result2.xlsx");        }        //自定义一个方法将文本绘制成图片并设置文本格式,包括字体,字体颜色、背景色、字体大小等        private static Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor, double height, double width)        {            //将用来作为水印的文本返回为图片并设置其展示样式            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.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;        }

注意:这种方法只有在打印预览或者将试图模式调整为“页面视图”时才可见水印。

水印添加效果:

C# 添加Excel水印

阅读结束!

如需转载请注明出处!

转载于:https://blog.51cto.com/eiceblue/2122711

你可能感兴趣的文章
Lind.DDD.SSO单点登陆组件的使用(原创)
查看>>
图的创建——邻接表法
查看>>
OJ错误命令解释
查看>>
Javascript的匿名函数
查看>>
python-memcached学习笔记
查看>>
最受美国年轻用户青睐的App排行榜
查看>>
C# 使用 iTextSharp 将 PDF 转换成 TXT 文本
查看>>
初学 Python(十一)——切片
查看>>
lower_bound
查看>>
Python_基础_(正表达式)
查看>>
C++字符串的输入
查看>>
Scrapy安装报错
查看>>
github开源文章生成pdf
查看>>
JavaEE(24) - JAAS开发安全的应用
查看>>
DDD领域驱动设计基本理论知识总结
查看>>
Python操作Redis数据库
查看>>
equals() 和 hashCode()
查看>>
<原创>在PE最后一节中插入补丁程序(附代码)
查看>>
简单的随笔 ,WSDL工具,Oracle备份还原,java调用.net webservice
查看>>
Workman websocket 握手连接
查看>>