How to add a watermark to Excel in C
#We know that Microsoft Excel does not have a built-in function to directly add a watermark to the Excel table, but in fact we can use other alternative ways to solve this problem, such as by adding a page Use eyebrow pictures or word art to imitate the look of a watermark. So in this article, I will show you how to add watermark to excel by creating and inserting header image in Excel. I have also shared how to add watermarks to word documents and pdf files before. You can refer to them if necessary.
Here I downloaded a free version of Excel component - Free Spire.XLS developed by E-iceblue company, which saves time and simplifies the code.
After the control is installed, create a project, add the dll file in the installation directory as a reference to the project, and add the following namespace:
using System; using System.Drawing; using System.Windows.Forms; using Spire.Xls;
This is the original excel table Screenshot:
The following are detailed steps and code snippets:
Step 1: First define a DrawText() method, and Creates an image based on the contents of a string. The string can be "Confidential", "Draft", "Sample" or any text you want to appear as a watermark.
private static System.Drawing.Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor, double height, double width) <br>{ //创建一个指定宽度和高度的位图图像 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; }
Step 2: Initialize a new workbook and load the watermarked file.
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");
Step 3: Call the DrawText() method to create a new picture and set the header picture to left alignment. Secondly, because the header image will only be displayed when the view mode is layout, you must remember to change the view mode to layout.
Font font = new System.Drawing.Font("arial", 40); String watermark = "内部资料"; foreach (Worksheet sheet in workbook.Worksheets) { //调用DrawText()方法新建图片 System.Drawing.Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth); //将页眉图片设置为左对齐 sheet.PageSetup.LeftHeaderImage = imgWtrmrk; sheet.PageSetup.LeftHeader = "&G"; //水印只会在此种模式下显现 sheet.ViewMode = ViewMode.Layout; }
Step 4: Save and open the file.
workbook.SaveToFile("watermark.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("watermark.xlsx");
Rendering :
All codes:
using System; using System.Drawing; using System.Windows.Forms; using Spire.Xls; namespace Add_Watermark_To_Excel { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //初始化一个新工作簿并加载要添加水印的文件 Workbook workbook = new Workbook(); workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx"); //在页眉插入图片 Font font = new System.Drawing.Font("arial", 40); String watermark = "内部资料"; foreach (Worksheet sheet in workbook.Worksheets) { //调用DrawText()方法新建图片 System.Drawing.Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth); //将页眉图片设置为左对齐 sheet.PageSetup.LeftHeaderImage = imgWtrmrk; sheet.PageSetup.LeftHeader = "&G"; //水印只会在此种模式下显现 sheet.ViewMode = ViewMode.Layout; } workbook.SaveToFile("水印.xlsx", ExcelVersion.Version2010); System.Diagnostics.Process.Start("水印.xlsx"); } <br> private static System.Drawing.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; } } }
Thank you for browsing, I hope This article can bring you some help, thank you for your support of this site!
For more C# examples of adding watermarks to Excel, please pay attention to the PHP Chinese website for related articles!