Maison  >  Article  >  développement back-end  >  Exemple détaillé d'ajout d'un filigrane à Excel à l'aide de C#

Exemple détaillé d'ajout d'un filigrane à Excel à l'aide de C#

高洛峰
高洛峰original
2017-01-13 17:06:542128parcourir

Comment ajouter un filigrane à Excel en C#

Nous savons que Microsoft Excel n'a pas de fonction intégrée pour ajouter directement un filigrane au tableau Excel, mais en fait nous pouvons utiliser d'autres moyens alternatifs pour résoudre ce problème problème, par exemple en ajoutant une page. Utilisez des images de sourcils ou des dessins de mots pour imiter l'apparence d'un filigrane. Donc, dans cet article, je vais vous montrer comment ajouter un filigrane à Excel en créant et en insérant une image d'en-tête dans Excel. J'ai également expliqué comment ajouter des filigranes aux documents Word et aux fichiers PDF. Vous pouvez vous y référer si nécessaire.

Ici, j'ai téléchargé une version gratuite du composant Excel - Free Spire.XLS développé par la société E-iceblue, qui permet de gagner du temps et de simplifier le code.

Une fois le contrôle installé, créez un projet, ajoutez le fichier dll dans le répertoire d'installation comme référence au projet et ajoutez l'espace de noms suivant :

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

Il s'agit de la capture d'écran Excel originale du tableau :

Exemple détaillé dajout dun filigrane à Excel à laide de C#

Voici les étapes détaillées et les extraits de code :

Étape 1 : Définissez d’abord une méthode DrawText() et créez une image basée sur le contenu de la chaîne. La chaîne peut être « Confidentiel », « Brouillon », « Échantillon » ou tout autre texte que vous souhaitez afficher en filigrane.

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;
}

Étape 2 : Initialisez un nouveau classeur et chargez le fichier filigrané.

Workbook workbook = new Workbook();
workbook.LoadFromFile (@"C:UsersAdministratorDesktopsample.xlsx");

Étape 3 : Appelez la méthode DrawText() pour créez une nouvelle image et définissez l’image d’en-tête alignée à gauche. Deuxièmement, comme l'image d'en-tête ne sera affichée que lorsque le mode d'affichage est Mise en page, vous devez vous rappeler de changer le mode d'affichage en Mise en page.

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;
 }

Étape 4 : Enregistrez et ouvrez le fichier.

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

Rendu :

Exemple détaillé dajout dun filigrane à Excel à laide de C#

Tous les codes :

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;
    }
  
  }
}

Merci pour votre navigation, J'espère que cet article pourra vous apporter un peu d'aide, merci pour votre soutien à ce site !

Pour des exemples plus détaillés d'ajout de filigrane en C# à Excel et des articles connexes, veuillez prêter attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn