Rumah pembangunan bahagian belakang Tutorial C#.Net C#给Excel添加水印实例详解

C#给Excel添加水印实例详解

Jan 13, 2017 pm 05:06 PM

C#中如何给Excel添加水印

我们知道Microsoft Excel并没有内置的功能直接给Excel表添加水印,但是其实我们可以用其他变通的方式来解决此问题,如通过添加页眉图片或艺术字的方法来模仿水印的外观。所以在这篇文章中,我将向您演示来如何通过在Excel中创建和插入页眉图片来为excel添加水印。之前我也分享了如何给word文档添加水印和pdf文件添加水印的方法,有需要也可以参考。

这里我下载了一个E-iceblue公司开发的免费版的Excel组件- Free Spire.XLS,这样既节省时间,又简化了代码。

控件安装后,创建项目,添加安装目录下的dll文件作为项目的引用,并添加如下命名空间:

using System;
using System.Drawing;
using System.Windows.Forms;
using Spire.Xls;
Salin selepas log masuk

这是原excel表的截图:

C#给Excel添加水印实例详解

以下是详细步骤和代码片段:

步骤1:首先定义一个DrawText()方法,并在字符串的内容基础上创建一个图片。字符串可以是“机密”、“草稿”、“样品”或任何你想要显示为水印的文本。

private static System.Drawing.Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor, double height, double width) <br>{
 //创建一个指定宽度和高度的位图图像
 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;
}
Salin selepas log masuk

步骤2:初始化一个新的工作簿并加载添加水印的文件。

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

步骤3:调用DrawText()方法新建一个图片,并将页眉图片设置为左对齐。其次,因为在视图模式是布局的状态下页眉图片才会显示,所以一定要记得将视图模式改为布局。

Font font = new System.Drawing.Font("arial", 40);
String watermark = "内部资料";
foreach (Worksheet sheet in workbook.Worksheets)
{
 //调用DrawText()方法新建图片
 System.Drawing.Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
 //将页眉图片设置为左对齐
 sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
 sheet.PageSetup.LeftHeader = "&G";
 //水印只会在此种模式下显现
 sheet.ViewMode = ViewMode.Layout;
 }
Salin selepas log masuk

步骤4:保存并打开文件。

workbook.SaveToFile("水印.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("水印.xlsx");

效果图:

C#给Excel添加水印实例详解

全部代码:

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 = "内部资料";
      foreach (Worksheet sheet in workbook.Worksheets)
      {
        //调用DrawText()方法新建图片
        System.Drawing.Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);
        //将页眉图片设置为左对齐
        sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
        sheet.PageSetup.LeftHeader = "&G";
        //水印只会在此种模式下显现
        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)
    {
      //创建一个指定宽度和高度的位图图像
      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;
    }
  
  }
}
Salin selepas log masuk

   

 感谢您的浏览,希望本文能给您带来一定的帮助,谢谢大家对本站的 支持!

更多C#给Excel添加水印实例详解相关文章请关注PHP中文网!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah alternatif untuk membatalkan bahasa C Apakah alternatif untuk membatalkan bahasa C Mar 03, 2025 pm 05:37 PM

Artikel ini meneroka cabaran penentuan penunjuk null dalam C. Ia berpendapat bahawa masalah itu tidak batal sendiri, tetapi penyalahgunaannya. Artikel ini memperincikan amalan terbaik untuk mencegah dereferensi, termasuk pemeriksaan pra-pengertian, penunjuk inisial

Cara menambah pengkompil C peringkat seterusnya Cara menambah pengkompil C peringkat seterusnya Mar 03, 2025 pm 05:44 PM

Artikel ini menerangkan cara membuat aksara baru dalam C menggunakan urutan \ n Escape dalam Printf dan meletakkan fungsi. Ia memperincikan fungsi dan menyediakan contoh kod yang menunjukkan penggunaannya untuk pecah talian dalam output.

Penyusun bahasa C mana yang lebih baik? Penyusun bahasa C mana yang lebih baik? Mar 03, 2025 pm 05:39 PM

Artikel ini membimbing pemula untuk memilih pengkompil C. Ia berpendapat bahawa GCC, kerana kemudahan penggunaannya, ketersediaan yang luas, dan sumber yang luas, adalah yang terbaik untuk pemula. Walau bagaimanapun, ia juga membandingkan GCC, Clang, MSVC, dan TCC, yang menonjolkan perbezaan mereka

Adakah Null masih penting dalam pengaturcaraan moden dalam bahasa C? Adakah Null masih penting dalam pengaturcaraan moden dalam bahasa C? Mar 03, 2025 pm 05:35 PM

Artikel ini menekankan kepentingan berterusan null dalam pengaturcaraan C moden. Walaupun kemajuan, null tetap penting untuk pengurusan penunjuk yang jelas, mencegah kesalahan segmentasi dengan menandakan ketiadaan alamat memori yang sah. Prac terbaik

Apakah versi web penyusun bahasa C? Apakah versi web penyusun bahasa C? Mar 03, 2025 pm 05:42 PM

Artikel ini mengkaji semula penyusun dalam talian untuk pemula, memberi tumpuan kepada kemudahan penggunaan dan keupayaan debug. Onlineegdb dan Repl.It diserlahkan untuk antara muka mesra pengguna dan alat debugging yang berguna. Pilihan lain seperti programz dan penyusunan

C Laman Web Pengaturcaraan Dalam Talian C Ringkasan Laman Web Rasmi C Laman Web Pengaturcaraan Dalam Talian C Ringkasan Laman Web Rasmi Mar 03, 2025 pm 05:41 PM

Artikel ini membandingkan platform pengaturcaraan dalam talian C, menonjolkan perbezaan ciri -ciri seperti alat debugging, fungsi IDE, pematuhan standard, dan had memori/pelaksanaan. Ia berpendapat bahawa platform "terbaik" bergantung kepada keperluan pengguna,

Kaedah Penyalinan Kod oleh Compiler Bahasa C Kaedah Penyalinan Kod oleh Compiler Bahasa C Mar 03, 2025 pm 05:43 PM

Artikel ini membincangkan penyalinan kod yang efisien dalam c ides. Ia menekankan bahawa penyalinan adalah fungsi IDE, bukan ciri pengkompil, dan strategi butiran untuk kecekapan yang lebih baik, termasuk menggunakan alat pemilihan IDE, lipatan kod, carian/menggantikan, templa

Cara menyelesaikan masalah tidak muncul tetingkap output oleh pengkompil bahasa C Cara menyelesaikan masalah tidak muncul tetingkap output oleh pengkompil bahasa C Mar 03, 2025 pm 05:40 PM

Artikel ini menyelesaikan masalah tingkap output yang hilang dalam kompilasi program C. Ia meneliti sebab -sebab seperti gagal menjalankan kesilapan, kesilapan program, tetapan penyusun yang salah, proses latar belakang, dan penamatan program yang cepat. Penyelesaian melibatkan ch

See all articles