>  기사  >  백엔드 개발  >  C#을 사용하여 Excel에 워터마크를 추가하는 자세한 예

C#을 사용하여 Excel에 워터마크를 추가하는 자세한 예

高洛峰
高洛峰원래의
2017-01-13 17:06:542134검색

C#에서 Excel에 워터마크를 추가하는 방법

Microsoft Excel에는 Excel 표에 워터마크를 직접 추가하는 기능이 내장되어 있지 않다는 것을 알고 있지만 실제로는 이 문제를 해결하기 위해 다른 대체 방법을 사용할 수 있습니다. 문제(예: 페이지 추가) 눈썹 그림이나 워드 아트를 사용하여 워터마크 모양을 모방하세요. 그래서 이번 글에서는 엑셀에서 헤더 이미지를 생성하고 삽입하여 엑셀에 워터마크를 추가하는 방법을 알려드리겠습니다. 워드 문서와 PDF 파일에 워터마크를 추가하는 방법도 공유해 놓았으니 필요하시면 참고하시면 됩니다.

여기서 저는 E-iceblue 회사에서 개발한 무료 버전의 Excel 구성 요소인 Free Spire.XLS를 다운로드했습니다. 이 버전은 시간을 절약하고 코드를 단순화합니다.

컨트롤이 설치된 후 프로젝트를 생성하고 프로젝트에 대한 참조로 설치 디렉터리에 dll 파일을 추가한 후 다음 네임스페이스를 추가합니다.

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

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

2단계: 새 통합 문서를 초기화하고 워터마크가 있는 파일을 로드합니다.

Workbook workbook = new Workbook();
workbook.LoadFromFile(@"C:UsersAdministratorDesktopsample.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;
 }

4단계: 파일을 저장하고 엽니다.

workbook.SaveToFile("watermark.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("watermark.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;
    }
  
  }
}

이 글이 도움이 될 수 있습니다. 이 사이트를 지원해 주셔서 감사합니다!

C#의 엑셀 워터마크 추가에 대한 자세한 예시와 관련 글은 PHP 중국어 홈페이지를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.