最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中給Excel添加水印的具體方法

 更新時間:2016年09月28日 10:35:41   作者:Yesi  
這篇文章主要介紹了C#中如何給Excel添加水印,具有一定的參考價值,感興趣的小伙伴們可以參考一下

我們知道Microsoft Excel并沒有內(nèi)置的功能直接給Excel表添加水印,但是其實我們可以用其他變通的方式來解決此問題,如通過添加頁眉圖片或藝術(shù)字的方法來模仿水印的外觀。所以在這篇文章中,我將向您演示來如何通過在Excel中創(chuàng)建和插入頁眉圖片來為excel添加水印。之前我也分享了如何給word文檔添加水印和pdf文件添加水印的方法,有需要也可以參考。

這里我下載了一個E-iceblue公司開發(fā)的免費版的Excel組件- Free Spire.XLS,這樣既節(jié)省時間,又簡化了代碼。

控件安裝后,創(chuàng)建項目,添加安裝目錄下的dll文件作為項目的引用,并添加如下命名空間:

using System;
using System.Drawing;
using System.Windows.Forms;
using Spire.Xls; 

這是原excel表的截圖:

以下是詳細步驟和代碼片段:

步驟1:首先定義一個DrawText()方法,并在字符串的內(nèi)容基礎(chǔ)上創(chuàng)建一個圖片。字符串可以是“機密”、“草稿”、“樣品”或任何你想要顯示為水印的文本。

private static System.Drawing.Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor, double height, double width) <br>{
 //創(chuàng)建一個指定寬度和高度的位圖圖像
 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:初始化一個新的工作簿并加載添加水印的文件。

Workbook workbook = new Workbook();
workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");

步驟3:調(diào)用DrawText()方法新建一個圖片,并將頁眉圖片設(shè)置為左對齊。其次,因為在視圖模式是布局的狀態(tài)下頁眉圖片才會顯示,所以一定要記得將視圖模式改為布局。

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);
 //將頁眉圖片設(shè)置為左對齊
 sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
 sheet.PageSetup.LeftHeader = "&G";
 //水印只會在此種模式下顯現(xiàn)
 sheet.ViewMode = ViewMode.Layout;
 }

步驟4:保存并打開文件。

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)
  {
   //初始化一個新工作簿并加載要添加水印的文件
   Workbook workbook = new Workbook();
   workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx");
   //在頁眉插入圖片
   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);
    //將頁眉圖片設(shè)置為左對齊
    sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
    sheet.PageSetup.LeftHeader = "&G";
    //水印只會在此種模式下顯現(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)建一個指定寬度和高度的位圖圖像
   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;
  }
 
 } 
}

 感謝您的瀏覽,希望本文能給您帶來一定的幫助。

相關(guān)文章

  • winform c#中子窗體關(guān)閉刷新父窗體的實例

    winform c#中子窗體關(guān)閉刷新父窗體的實例

    下面小編就為大家?guī)硪黄獁inform c#中子窗體關(guān)閉刷新父窗體的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • C#中的Socket編程詳解

    C#中的Socket編程詳解

    本文詳細講解了C#中的Socket編程,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 詳解C# 結(jié)構(gòu)體

    詳解C# 結(jié)構(gòu)體

    這篇文章主要介紹了C# 結(jié)構(gòu)體的的相關(guān)資料,文中示例代碼非常細致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C# WPF編程之命令模型詳解

    C# WPF編程之命令模型詳解

    這篇文章主要為大家詳細介紹了C# WPF編程中命令模型的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • C#事件管理器如何清空所有監(jiān)聽詳解

    C#事件管理器如何清空所有監(jiān)聽詳解

    這篇文章主要給大家介紹了關(guān)于C#事件管理器如何清空所有監(jiān)聽的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C#去掉字符串中所有匹配的字符String.Replace方法

    C#去掉字符串中所有匹配的字符String.Replace方法

    在C#中,如果你想要去掉字符串中所有匹配的字符,你可以使用String.Replace方法,本文主要介紹了C#去掉字符串中所有匹配的字符String.Replace方法,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • unity自帶尋路(導(dǎo)航)系統(tǒng) Nav Mesh導(dǎo)航網(wǎng)格

    unity自帶尋路(導(dǎo)航)系統(tǒng) Nav Mesh導(dǎo)航網(wǎng)格

    這篇文章主要為大家詳細介紹了unity自帶尋路(導(dǎo)航)系統(tǒng),Nav Mesh導(dǎo)航網(wǎng)格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • CDMA 貓用AT命令發(fā)中文短信(C#)

    CDMA 貓用AT命令發(fā)中文短信(C#)

    CDMA貓連PDU都不支持,只能發(fā)文本短信。而且發(fā)中文短信居然是UNICODE,無法在超級終端里輸入。只能寫程序。網(wǎng)上這個問題談?wù)摰乇容^多,做起來比較累,還偶爾會出亂碼。還是將C#的成功代碼帖一下吧。
    2009-08-08
  • C#實現(xiàn)子窗體與父窗體通信方法實例總結(jié)

    C#實現(xiàn)子窗體與父窗體通信方法實例總結(jié)

    這篇文章主要介紹了C#實現(xiàn)子窗體與父窗體通信方法,實例總結(jié)了常用的四種窗體通信方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#給PDF文件添加水印

    C#給PDF文件添加水印

    這篇文章主要為大家詳細介紹了C#給PDF文件添加水印的相關(guān)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

镇巴县| 延安市| 新绛县| 临城县| 定远县| 张家港市| 平武县| 屏东县| 黔西| 肥乡县| 无为县| 桃园县| 湟源县| 六枝特区| 云霄县| 大城县| 嵩明县| 治县。| 惠来县| 花垣县| 南开区| 麟游县| 桂阳县| 集安市| 巴林右旗| 花莲市| 鲁山县| 赤城县| 乌恰县| 彭泽县| 旬邑县| 正蓝旗| 封丘县| 中卫市| 乌兰浩特市| 辉县市| 江孜县| 封开县| 门头沟区| 灵宝市| 和平县|