C#給Excel添加水印實(shí)例詳解
C#中如何給Excel添加水印
我們知道Microsoft Excel并沒(méi)有內(nèi)置的功能直接給Excel表添加水印,但是其實(shí)我們可以用其他變通的方式來(lái)解決此問(wèn)題,如通過(guò)添加頁(yè)眉圖片或藝術(shù)字的方法來(lái)模仿水印的外觀。所以在這篇文章中,我將向您演示來(lái)如何通過(guò)在Excel中創(chuàng)建和插入頁(yè)眉圖片來(lái)為excel添加水印。之前我也分享了如何給word文檔添加水印和pdf文件添加水印的方法,有需要也可以參考。
這里我下載了一個(gè)E-iceblue公司開(kāi)發(fā)的免費(fèi)版的Excel組件- Free Spire.XLS,這樣既節(jié)省時(shí)間,又簡(jiǎn)化了代碼。
控件安裝后,創(chuàng)建項(xiàng)目,添加安裝目錄下的dll文件作為項(xiàng)目的引用,并添加如下命名空間:
using System; using System.Drawing; using System.Windows.Forms; using Spire.Xls;
這是原excel表的截圖:

以下是詳細(xì)步驟和代碼片段:
步驟1:首先定義一個(gè)DrawText()方法,并在字符串的內(nèi)容基礎(chǔ)上創(chuàng)建一個(gè)圖片。字符串可以是“機(jī)密”、“草稿”、“樣品”或任何你想要顯示為水印的文本。
private static System.Drawing.Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor, double height, double width) <br>{
//創(chuàng)建一個(gè)指定寬度和高度的位圖圖像
Image img = new Bitmap((int)width, (int)height);
Graphics drawing = Graphics.FromImage(img);
//獲取文本大小
SizeF textSize = drawing.MeasureString(text, font);
//旋轉(zhuǎn)圖片
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);
//創(chuàng)建文本刷
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, ((int)width - textSize.Width) / 2, ((int)height - textSize.Height) / 2);
drawing.Save();
return img;
}
步驟2:初始化一個(gè)新的工作簿并加載添加水印的文件。
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");
步驟3:調(diào)用DrawText()方法新建一個(gè)圖片,并將頁(yè)眉圖片設(shè)置為左對(duì)齊。其次,因?yàn)樵谝晥D模式是布局的狀態(tài)下頁(yè)眉圖片才會(huì)顯示,所以一定要記得將視圖模式改為布局。
Font font = new System.Drawing.Font("arial", 40);
String watermark = "內(nèi)部資料";
foreach (Worksheet sheet in workbook.Worksheets)
{
//調(diào)用DrawText()方法新建圖片
System.Drawing.Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
//將頁(yè)眉圖片設(shè)置為左對(duì)齊
sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
sheet.PageSetup.LeftHeader = "&G";
//水印只會(huì)在此種模式下顯現(xiàn)
sheet.ViewMode = ViewMode.Layout;
}
步驟4:保存并打開(kāi)文件。
workbook.SaveToFile("水印.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("水印.xlsx");
效果圖:

全部代碼:
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)
{
//初始化一個(gè)新工作簿并加載要添加水印的文件
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");
//在頁(yè)眉插入圖片
Font font = new System.Drawing.Font("arial", 40);
String watermark = "內(nèi)部資料";
foreach (Worksheet sheet in workbook.Worksheets)
{
//調(diào)用DrawText()方法新建圖片
System.Drawing.Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
//將頁(yè)眉圖片設(shè)置為左對(duì)齊
sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
sheet.PageSetup.LeftHeader = "&G";
//水印只會(huì)在此種模式下顯現(xiàn)
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)
{
//創(chuàng)建一個(gè)指定寬度和高度的位圖圖像
Image img = new Bitmap((int)width, (int)height);
Graphics drawing = Graphics.FromImage(img);
//獲取文本大小
SizeF textSize = drawing.MeasureString(text, font);
//旋轉(zhuǎn)圖片
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);
//創(chuàng)建文本刷
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, ((int)width - textSize.Width) / 2, ((int)height - textSize.Height) / 2);
drawing.Save();
return img;
}
}
}
感謝您的瀏覽,希望本文能給您帶來(lái)一定的幫助,謝謝大家對(duì)本站的 支持!
- C#實(shí)現(xiàn)DataSet內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel和Word文件的通用類(lèi)完整實(shí)例
- C#使用winform簡(jiǎn)單導(dǎo)出Excel的方法
- C#使用oledb導(dǎo)出數(shù)據(jù)到excel的方法
- C#使用Aspose.Cells控件讀取Excel
- C#定制Excel界面并實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互的方法
- C#讀取Excel的三種方式以及比較分析
- C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
- C#實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到word或者Excel中的方法
- C#實(shí)現(xiàn)導(dǎo)入CSV文件到Excel工作簿的方法
相關(guān)文章
C#對(duì)Excel表csv文件的讀寫(xiě)操作詳解
在C#編程中,CSV(Comma Separated Values)文件是一種常見(jiàn)的數(shù)據(jù)存儲(chǔ)格式,用于存儲(chǔ)表格數(shù)據(jù),如數(shù)據(jù)庫(kù)導(dǎo)出或報(bào)表,CSV文件以其簡(jiǎn)單、易于處理和跨平臺(tái)兼容性而受到廣泛使用,本篇文章將深入探討如何在C#中進(jìn)行CSV文件的讀寫(xiě)操作,需要的朋友可以參考下2024-12-12
Unity實(shí)現(xiàn)卡片循環(huán)滾動(dòng)效果的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Unity實(shí)現(xiàn)卡片循環(huán)滾動(dòng)的效果,文中的實(shí)現(xiàn)步驟講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-12-12
C#實(shí)現(xiàn)將PDF轉(zhuǎn)為線性化PDF
線性化PDF文件是PDF文件的一種特殊格式,可以通過(guò)Internet更快地進(jìn)行查看。這篇文章主要介紹了如何通過(guò)C#實(shí)現(xiàn)將PDF轉(zhuǎn)為線性化PDF,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12
詳解WPF如何在基礎(chǔ)控件上顯示Loading等待動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了WPF如何在基礎(chǔ)控件上顯示Loading等待動(dòng)畫(huà)的效果,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下2023-04-04
WPF實(shí)現(xiàn)動(dòng)畫(huà)效果
這篇文章介紹了WPF實(shí)現(xiàn)動(dòng)畫(huà)效果的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
C#中Request.Cookies 和 Response.Cookies 的區(qū)別分析
本文通過(guò)實(shí)例代碼向我們展示了C#中Request.Cookies 和 Response.Cookies 的區(qū)別,文章淺顯易懂,這里推薦給大家。2014-11-11

