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

- 通过添加背景图片来实现水印效果
- 通过页眉页脚添加图片水印效果。下面作详细介绍
 所用工具: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;
        }需要注意的是,这种方法添加的背景水印无法实现打印效果,但日常无纸化办公环境中,该方法也能很好的满足需求。
水印添加效果:
方法二、添加页眉图片水印
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;
        }注意:这种方法只有在打印预览或者将试图模式调整为“页面视图”时才可见水印。
水印添加效果:
阅读结束!
如需转载请注明出处!
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
网页名称:C#添加Excel水印-创新互联
文章起源:http://www.scyingshan.cn/article/dcjjjc.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 