C# 添加Excel水印

2025-11-01 20:32:45

1、【C#】

static void Main(string[] args)

        {

//创建一个Workbook类对象,并加载需要添加水印的Excel文档

            Workbook workbook = new Workbook();

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

            //初始化一个Font类字体对象,设置字体字号

            Font font = new Font("宋体", 36);

            //初始化一个String类型变量,并赋值“仅内部使用”作为水印文字

            String watermark = "仅内部使用";

            //设置背景图片为水印

//遍历工作簿中所有工作表

            foreach (Worksheet sheet in workbook.Worksheets)

            {

                //调用DrawText()方法绘制文本为图片

                Image imgWtrmrk = DrawText(watermark, font, Color.LightCoral, Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);

                //将水印图片设置成位图

                sheet.PageSetup.BackgoundImage = imgWtrmrk as Bitmap;

            }

            //保存文档并预览

            workbook.SaveToFile("result.xlsx", ExcelVersion.Version2010);

            System.Diagnostics.Process.Start("result.xlsx");

        }

        //自定义方法将文本绘制成图片并设置文本格式,包括字体,字体颜色、背景色、字体大小等

        private static 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;

        }

PS: 需要注意的是,这种方法添加的背景水印无法实现打印效果,但日常无纸化办公环境中,该方法也能很好的满足需求。

C# 添加Excel水印

1、【C#】

static void Main(string[] args)

        {

//创建一个Workbook类对象并加载Excel文档

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

            //初始化一个Font类字体对象,设置字体字号

            Font font = new Font("宋体", 36);

            //初始化一个String类型变量,并赋值“内部资料”作为水印文字

            String watermark = "内部资料";

            //在页眉中插入图片作为模拟水印

            //遍历工作簿中所有工作表

            foreach (Worksheet sheet in workbook.Worksheets)

            {

                //调用DrawText()方法创建的图片

                Image imgWtrmrk = DrawText(watermark, font, System.Drawing.Color.LightCoral, System.Drawing.Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);

                //插入图片作为LeftHeaderImage

                sheet.PageSetup.LeftHeaderImage = imgWtrmrk;

                sheet.PageSetup.LeftHeader = "&G";

                //设置视图模式,此方法中页眉水印仅在Layout模式下直观可见

                sheet.ViewMode = ViewMode.Layout;

            }

            //保存文档并预览

            workbook.SaveToFile("result2.xlsx", ExcelVersion.Version2010);

            System.Diagnostics.Process.Start("result2.xlsx");

        }

        //自定义一个方法将文本绘制成图片并设置文本格式,包括字体,字体颜色、背景色、字体大小等

        private static 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;

        }

PS: 这种方法只有在打印预览或者将试图模式调整为“页面视图”时才可见水印。

C# 添加Excel水印

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:29
  • 阅读量:174
  • 阅读量:132
  • 阅读量:178
  • 阅读量:86
  • 猜你喜欢