如何製作Excel水印?

有時候我們在做一些表格的時候,希望可以在表格中顯示出自己的水印,彰顯自己的工作成果,那要怎麼在Excel裡面設置水印呢?下面我們介紹3種設置Excel水印的方法。

首先,第一種方法是常規的方法,點擊插入選項卡—點擊圖片--設置圖片格式—顏色—沖蝕,這樣就將圖片設置到頁眉了,然後我們這邊將焦點放在「&[圖片]」前面,然後回車再回車,將水印設置到合適的位置,這樣就可以了,當然這種方法的話,水印是只有列印的時候才可以看得到,列印出來後會顯示在表中。

第二中方法,效果也是跟上面這種類似,也要列印的時候才能顯示出來,或者在頁面布局模式中才能看得到,先添加以下代碼,

------為單個工作表設置可列印的水印-------

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

效果如下:

從上面兩個例子可以看到,該類水印只在列印預覽或將視圖模式為「頁面視圖」下才能直觀可見,正常模式下我們是看不到這個水印的,這就比較坑爹了,當然我們可以設置一些圖片的透明度,然後用VBA代碼設置為不可編輯,但是這樣做有一個問題,就是很容易被更改掉,畢竟,Excel的加密安全性太低,所以,如果我們要在Excel中添加在常規模式下可見的圖片水印或者文字水印,可以用Visual studio裡面製作一個插件,使用Spire.XLS組件給Excel工作表添加水印,代碼如下:

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

static void Main(string[] args)

{

//載入Excel文檔

Workbook workbook = new Workbook();

workbook.LoadFromFile("Test.xlsx");

//設置水印文字和字體

Font font = new Font("宋體", 36);

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;

}

當然,沒有人會為了加個水印去製作一個插件,就像沒人會給水溝修座橋,當然要是開發插件的話,那這樣一個小功能,就必須要有了哦。


推薦閱讀:

TAG:VBA | MicrosoftExcel |