C# WebForm项目:如何让Aspose生成的Excel工作表重复水印?
实现每个工作表水平垂直重复显示水印的方案
嘿,我来帮你调整代码,实现每个工作表都能水平、垂直重复显示水印的需求!原来的代码只在第一个工作表添加了单个水印,我们可以通过遍历所有工作表+循环生成重复水印的方式来解决这个问题。
完整修改后的代码
using Aspose.Cells; using Aspose.Cells.Drawing; using System.Drawing; public Workbook AddRepeatingWatermarks(Workbook workbook) { // 定义水印的基础参数,可按需调整 string watermarkText = "WATERMARKTEXT"; string fontName = "Arial Black"; int fontSize = 47; Color watermarkColor = Color.Red; float transparency = 0.8f; // 水印之间的水平/垂直间隔(数值越小,水印越密集) int horizontalSpacing = 250; int verticalSpacing = 200; // 遍历工作簿中的每一个工作表 foreach (Worksheet sheet in workbook.Worksheets) { // 获取工作表的打印页面尺寸,确保水印覆盖整个页面 int pageWidth = sheet.PageSetup.PaperWidth; int pageHeight = sheet.PageSetup.PaperHeight; // 双层循环生成水平+垂直重复的水印 for (int xOffset = 0; xOffset < pageWidth; xOffset += horizontalSpacing) { for (int yOffset = 0; yOffset < pageHeight; yOffset += verticalSpacing) { // 添加艺术字水印 Shape wordart = sheet.Shapes.AddTextEffect( MsoPresetTextEffect.TextEffect2, watermarkText, fontName, fontSize, false, false, xOffset, yOffset, // 水印的起始坐标 0, 0, 0, 0); // 忽略固定宽高,让文字自适应 // 设置水印填充样式:红色+高透明 MsoFillFormat fillFormat = wordart.FillFormat; fillFormat.ForeColor = watermarkColor; fillFormat.Transparency = transparency; // 隐藏水印的轮廓线,避免多余边框 MsoLineFormat lineFormat = wordart.LineFormat; lineFormat.IsVisible = false; // 将水印置于底层,防止遮挡单元格内容 wordart.ZOrderPosition = 0; } } } return workbook; }
关键改动说明
- 遍历所有工作表:用
foreach循环遍历workbook.Worksheets,确保每个工作表都能添加上重复水印。 - 重复水印逻辑:通过双层循环,按设定的间隔值生成多个水印,覆盖整个工作表的打印页面范围,你可以调整
horizontalSpacing和verticalSpacing来控制水印的密度。 - 优化水印层级:添加
wordart.ZOrderPosition = 0,让水印自动置于所有单元格内容的底层,不会遮挡表格数据。 - 参数可配置:把水印文本、字体、颜色、间隔等参数单独抽出来,后续调整需求时直接修改参数即可,不用动核心逻辑。
如果需要让水印呈斜角显示,还可以在创建wordart后添加一行代码:wordart.RotationAngle = 45;,这样水印会以45度角重复排列,更符合常见的水印样式哦!
内容的提问来源于stack exchange,提问作者Masoumeh Karvar
相关产品推荐
相关产品推荐

