来源:一方Excel

有时候我们在做一些表格的时候,希望可以在表格中显示出自己的水印,彰显一下自己的特点,下面我们介绍3种设置Excel水印的方法,来

首先,第一种方法是常规的方法,点击插入选项卡—点击图片--设置图片格式—颜色—冲蚀,这样就将图片设置到页眉了,然后我们这边将焦点放在“&[图片]”前面,然后回车再回车,将水印设置到合适的位置,这样就可以了,当然这种方法的话,水印是只有打印的时候才可以看得到,打印出来后会显示在表中。

excel中如何做水印(制作Excel水印你会吗)(1)

第二中方法,效果也是跟上面这种类似,也要打印的时候才能显示出来,或者在页面布局模式中才能看得到,先添加以下代码,

------为单个工作表设置可打印的水印-------

Sub 为工作表设置可打印的水印()

Dim Pic As String, rng As Range '声明变量

Pic = Application.GetOpenFilename("图片文件 (*.jpg; *.bmp),*.jpg; *.bmp") '弹出对话框,让用户选择一张作为水印的图片

If Pic = "False" Then Exit Sub '如果未选择图片则结束程序

ActiveSheet.PageSetup.LeftHeaderPicture.Filename = Pic '指定图片页眉的图片路径

ActiveSheet.PageSetup.LeftHeader = "&G" '让左边页眉显示图片

End Sub

------为全部工作表设置可打印的水印-------

Sub 为所有工作表设置可打印的水印()

Dim Pic As String, rng As Range, sht As Worksheet '声明变量

Pic = Application.GetOpenFilename("图片文件 (*.jpg; *.bmp),*.jpg; *.bmp") '弹出对话框,让用户选择一张作为水印的图片

If Pic = "False" Then Exit Sub '如果未选择图片则结束程序

For Each sht In Worksheets '遍历所有工作表

sht.PageSetup.LeftHeaderPicture.Filename = Pic '指定图片页眉的图片路径

sht.PageSetup.LeftHeader = "&G" '让左边页眉显示图片

Next sht

End Sub

效果如下:

excel中如何做水印(制作Excel水印你会吗)(2)

从上面两个例子可以看到,该类水印只在打印预览或将视图模式为“页面视图”下才能直观可见,正常模式下我们是看不到这个水印的,这就比较坑爹了,当然我们可以设置一些图片的透明度,然后用VBA代码设置为不可编辑,但是这样做有一个问题,就是很容易被更改掉,毕竟,Excel的加密安全性太低,所以,如果我们要在Excel中添加在常规模式下可见的图片水印或者文字水印,可以用Visual studio里面制作一个插件,使用Spire.XLS组件给Excel工作表添加水印,代码如下:

---------添加背景文本图片水印------------

  1. static void Main(string[] args)

  2. {

  3. //加载Excel文档

  4. Workbook workbook = new Workbook();

  5. workbook.LoadFromFile("Test.xlsx");



  6. //设置水印文字和字体

  7. Font font = new Font("宋体", 36);

  8. String watermark = "背景水印";



  9. //设置背景图片为水印

  10. foreach (Worksheet sheet in workbook.Worksheets)

  11. {

  12. //调用DrawText()方法创建的图片

  13. Image imgWtrmrk = DrawText(watermark, font,Color.LightCoral,Color.White, sheet.PageSetup.PageHeight,sheet.PageSetup.PageWidth);



  14. sheet.PageSetup.BackgoundImage = imgWtrmrk as Bitmap;



  15. }

  16. //保存文档并预览

  17. workbook.SaveToFile("result.xlsx", ExcelVersion.Version2010);

  18. System.Diagnostics.Process.Start("result.xlsx");

  19. }

  20. private static Image DrawText(String text, System.Drawing.Fontfont,Color textColor, Color backColor, double height, double width)

  21. {

  22. //将用来作为水印的文本返回为图片并设置其展示样式

  23. Image img = new Bitmap((int)width, (int)height);

  24. Graphics drawing = Graphics.FromImage(img);

  25. SizeF textSize = drawing.MeasureString(text, font);

  26. drawing.TranslateTransform(((int)width - textSize.Width) / 2,((int)height - textSize.Height) / 2);

  27. drawing.RotateTransform(-45);

  28. drawing.TranslateTransform(-((int)width - textSize.Width) / 2,-((int)height - textSize.Height) / 2);



  29. drawing.Clear(backColor);

  30. Brush textBrush = new SolidBrush(textColor);

  31. drawing.DrawString(text, font, textBrush, ((int)width -textSize.Width) / 2, ((int)height - textSize.Height) / 2);

  32. drawing.Save();

  33. return img;

  34. }

当然,没有人会为了加个水印去制作一个插件,就像没人会给水沟修座桥,当然要是开发插件的话,那有这样一个小功能,就必须要有了哦。

,