C# 添加Excel水印
阿新 • • 發佈:2018-06-01
C# .NET Spire.XLS 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; }
註意:這種方法只有在打印預覽或者將試圖模式調整為“頁面視圖”時才可見水印。
水印添加效果:
閱讀結束!
如需轉載請註明出處!
C# 添加Excel水印