You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:57:11