如何製作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 |