添加水印到excel文件

我有一个应用程序,从Excel工作表中读取数据在同一个文件中的另一个工作表打印出来。

为了我自己的满意度,我想添加一个水印到输出显示的那张纸上。 我正在使用C#和.NET

我是否需要粘贴任何特定的代码? 我不确定你需要什么。 请询问你是否需要更多的细节

用于处理excel对象的库 – :

using Microsoft.Office.Core; using Excel = Microsoft.Office.Interop.Excel; //creating an object of Application Excel.Application excelApp = new Excel.Application(); //creating an object of Workbook Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(path, 0,false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); //creating an object of Sheet Excel.Sheets excelSheets = (Excel.Sheets)excelWorkbook.Sheets; 

这可能是有帮助的…但是这里图像被添加为背景

http://csharp.net-informations.com/excel/csharp-insert-backgroud-excel.htm

由于Excel支持打开HTML,因此可以生成使用Excel打开的Html表格。 这段HTML代码添加一个背景图像或水印(不是HTML标准虽然)到您的Excel生成的文件。 您需要将图像文件放在与在Excel中打开的HTML文件相同的文件夹中。 这是针对您不使用任何.NET Framework来生成Excel兼容文件的情况。

Generated_Excel.html:

 <html> <body background="1.png"> <table> <tr> <td>Column1</td> <td>Column2</td> </tr> <tr> <td>Value Column 1</td> <td>Value Column 2</td> </tr> </table> </body> 

最后结果:

在这里输入图像说明

如果您使用的是Syncfusion XlsIO,那么这个代码就是您必须使用的代码 :

 // Set the image as sheet background sheet.PageSetup.BackgoundImage = new System.Drawing.Bitmap(@"image.png"); 

我一直在处理这个问题,因为我没有find我发布我的工作代码的任何地方的解决scheme。 此解决scheme通过创build临时图像并将其插入到幻灯片上工作。 创build代码的步骤基于此: http : //smallbusiness.chron.com/put-watermarks-photos-word-45076.html链接。

  public void AddWaterMarkToPowerPoint(string filePath) { string waterMarkText = "Top secret"; PowerPoint.Application powerPointApp = new PowerPoint.Application(); PowerPoint.Presentations pres = powerPointApp.Presentations; string imagePath = null; try { PowerPoint.Presentation pptPresentation = pres.Open(filePath, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse); PowerPoint.PageSetup pageSetup = pptPresentation.PageSetup; float pageWidth = pageSetup.SlideWidth; float pageHeight = pageSetup.SlideHeight; CreateTempWaterMarkImage(waterMarkText, ref imagePath, (int)pageHeight, (int)pageWidth); for (int i = 1; i <= pptPresentation.Slides.Count; i++) { PowerPoint.Slide slide = pptPresentation.Slides[i]; PowerPoint.Shapes shapes = slide.Shapes; PowerPoint.Shape shape = shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, 0, 0, pageWidth, pageHeight); shape.Fill.UserPicture(imagePath); shape.Fill.Transparency = 0.7f; shape.Line.Transparency = 1; shape.ZOrder(MsoZOrderCmd.msoBringToFront); } pptPresentation.SaveAs(filePath); pptPresentation.Close(); } catch (Exception ex) { //log exception throw; } finally { // Cleanup GC.Collect(); GC.WaitForPendingFinalizers(); powerPointApp.Quit(); //remove temp image if (imagePath != null) File.Delete(imagePath); } } private void CreateTempWaterMarkImage(string waterMarkText, ref string imagePath, int pageHeight, int pageWidth) { float angleRotation = (float)((Math.Atan2((double)pageHeight, (double)pageWidth) * 180) / Math.PI); float fontSize = (float)Math.Sqrt(Math.Pow(pageHeight, 2) + Math.Pow(pageWidth, 2)) / 50; using (Bitmap newie = new Bitmap(pageWidth, pageHeight)) { using (Graphics gr = Graphics.FromImage(newie)) { gr.SmoothingMode = SmoothingMode.AntiAlias; gr.TranslateTransform((float)pageWidth / 2f, (float)pageHeight / 2f); gr.RotateTransform(-angleRotation); Font font = new Font("Arial", fontSize, FontStyle.Regular); SizeF textSize = gr.MeasureString(companyName, font); gr.DrawString(waterMarkText, font, SystemBrushes.GrayText, -textSize.Width, -textSize.Height); } string fileName = Path.GetRandomFileName(); imagePath = Path.GetTempPath() + @"\" + fileName + ".png"; newie.Save(imagePath, ImageFormat.Png); } }