在电子表格中嵌入水印有助于保护敏感数据并表明文档所有权。 Conholdate.Total for Java 提供了一个直接的 API,只需几行代码即可在 Java 中向 Excel 插入水印。本指南将带您完成所需的设置、完整的实现以及关键的配置选项,帮助您高效地保护 Excel 工作簿。

如何在 Java 中为 Excel 插入水印 - 步骤指南

使用 ExcelLoadOptions 加载工作簿

  1. 加载 Excel 工作簿:使用 WatermarkerExcelLoadOptions 一起打开文件。
Watermarker watermarker = new Watermarker(inputPath, new ExcelLoadOptions());

Watermarker 类的文档位于 API 参考。使用 ExcelLoadOptions 加载可让您控制内存使用,这对于大型工作簿至关重要。

创建带样式的文本水印

  1. 创建文本水印:定义字体、颜色、不透明度、旋转角度和对齐方式。
Font font = new Font("Arial", 36);
TextWatermark watermark = new TextWatermark("CONFIDENTIAL", font);
watermark.setColor(Color.RED);
watermark.setOpacity(0.3);
watermark.setRotationAngle(45);
watermark.setHorizontalAlignment(HorizontalAlignment.Center);
watermark.setVerticalAlignment(VerticalAlignment.Center);

opacity 设置为 0.3 可使水印半透明,而 45 度的旋转则使其在工作表上呈对角线排列。您可以根据品牌指南或合规要求调整这些数值。

将水印应用于所有工作表

  1. 将水印添加到工作簿: add 方法在一次调用中将其应用于每个工作表。
watermarker.add(watermark);

如果需要对每个工作表进行单独控制,您可以通过 watermarker.getWorksheets() 检索各个工作表,并对每个工作表分别调用 add

保存带水印的工作簿

  1. 保存带水印的工作簿:选择 ExcelSaveOptions 来控制输出格式并保留原始元数据。
watermarker.save(outputPath, new ExcelSaveOptions());

ExcelSaveOptions 对象允许您指定是保留原始文件版本还是升级到最新的 XLSX 标准。

释放资源以避免内存泄漏

  1. 关闭 Watermarker: 释放资源以避免内存泄漏,尤其是在批量处理大量文件时。
watermarker.close();

关闭 Watermarker 还会刷新任何未完成的写入操作,确保输出文件不被损坏。

这些步骤演示了如何在 Java 中向 Excel 插入水印,同时让您能够控制外观和性能。

完整代码示例:在 Java 中向 Excel 插入水印 - 完整 Java 水印

以下代码演示了从加载工作簿到保存结果的整个过程。

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.TextWatermark;
import com.groupdocs.watermark.common.Font;
import com.groupdocs.watermark.common.Color;
import com.groupdocs.watermark.contents.HorizontalAlignment;
import com.groupdocs.watermark.contents.VerticalAlignment;
import com.groupdocs.watermark.options.load.ExcelLoadOptions;
import com.groupdocs.watermark.options.save.ExcelSaveOptions;

public class ExcelWatermarkExample {
    public static void main(String[] args) {
        String inputPath = "input.xlsx";
        String outputPath = "output_watermarked.xlsx";

Watermarker watermarker = null;
        try {
            // Load the Excel workbook (works for both XLS and XLSX)
            ExcelLoadOptions loadOptions = new ExcelLoadOptions();
            // For very large workbooks you can enable streaming mode:
            // loadOptions.setLoadAllWorksheets(false);
            watermarker = new Watermarker(inputPath, loadOptions);

// Create a text watermark with desired appearance
            Font font = new Font("Arial", 36);
            TextWatermark watermark = new TextWatermark("CONFIDENTIAL", font);
            watermark.setColor(Color.RED);
            watermark.setOpacity(0.3);               // 30% opacity
            watermark.setRotationAngle(45);          // diagonal
            watermark.setHorizontalAlignment(HorizontalAlignment.Center);
            watermark.setVerticalAlignment(VerticalAlignment.Center);

// Apply the watermark to all worksheets
            watermarker.add(watermark);

// Save the watermarked workbook
            ExcelSaveOptions saveOptions = new ExcelSaveOptions();
            watermarker.save(outputPath, saveOptions);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (watermarker != null) {
                watermarker.close();
            }
        }
    }
}

注意: 此代码示例演示了核心功能。在项目中使用之前,请确保更新文件路径(input.xlsxoutput_watermarked.xlsx)以匹配实际文件位置,确认已正确安装所有必需的依赖项,并在开发环境中进行彻底测试。如果遇到任何问题,请参考官方文档或联系支持团队获取帮助。

准备环境

添加 Maven 仓库和依赖

将 Conholdate Maven 仓库和 SDK 依赖添加到你的 pom.xml 中:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

您也可以直接从下载页面下载最新的 JAR 包。SDK 要求 Java 8 或更高版本,使用兼容的 IDE(如 IntelliJ IDEA 或 Eclipse)可以更轻松地进行调试。

配置授权(生产使用)

在生产环境中运行水印代码之前,请应用您的许可证文件:

import com.groupdocs.watermark.License;

License license = new License();
license.setLicense("path/to/Conholdate.Total.Java.lic");

临时许可证可用于评估,访问temporary license page。对于长期项目,请查看pricing page,以选择合适的方案。

什么使 Conholdate.Total for Java 适用于 Excel 水印

全面的 XLS/XLSX 支持

该库能够处理传统的 XLS 和现代 XLSX 格式,无需转换,保留公式、图表和宏。

大工作簿的高效流式模式

在处理包含数千行的工作簿时,通过设置 loadOptions.setLoadAllWorksheets(false) 来启用流式模式。这可以显著降低内存消耗。

丰富的水印样式选项

您可以控制字体系列、大小、颜色、不透明度、旋转角度和对齐方式。下表概述了最常调整的属性:

属性示例值影响
Fontnew Font("Arial", 36)确定水印文本的视觉样式。
ColorColor.RED设置水印颜色;接受任何 RGB 值。
Opacity0.3 (30%)控制透明度;数值越低,水印越不显眼。
Rotation Angle45 degrees将水印倾斜放置,以获得更好的覆盖范围。
Horizontal AlignmentHorizontalAlignment.Center水平放置水印。
Vertical AlignmentVerticalAlignment.Center垂直放置水印。

自动工作表覆盖

一次调用 watermarker.add(watermark) 即可将水印传播到每个工作表,免去编写重复循环的麻烦。

简单保存选项

ExcelSaveOptions 允许您保留原始文件格式或升级到最新的 XLSX 版本,您还可以指定是否保留宏。

所有这些功能在官方文档中有详细描述。

结论

在本教程中,您学习了如何使用 Conholdate.Total for Java 的强大功能在 Java 中向 Excel 插入水印。通过遵循一步一步的指南,您可以使用自定义文本保护电子表格,控制外观,并高效处理大文件。对于生产部署,您需要获得授权版本;请在定价页面查看价格,并从临时许可证页面获取临时许可证以评估 SDK。

常见问题

  • 如何添加图像水印而不是文本?
    使用 ImageWatermark 类,设置其不透明度和对齐方式,并像文本示例一样将其添加到 Watermarker 实例中。图像可以是 PNGJPEG、或 BMP,您还可以将其缩放以适应工作表。有关详细信息,请参阅 API 参考

  • 将工作簿转换为PDF后水印会可见吗?
    是的。水印已嵌入工作簿,在以后使用Conholdate.Total for Java转换为任何格式(如 PDF)时都会出现。转换过程会保留所有视觉元素,包括水印。

  • 我可以在每个工作表层面控制水印吗?
    SDK 默认将水印应用于所有工作表,但您可以使用 watermarker.getWorksheets().get_Item(index) 加载单个工作表,并有选择地对每个工作表调用 add。这为需要在每张表上使用不同品牌的报告提供了细粒度的控制。

  • 我需要为开发和测试获取许可证吗?
    临时许可证可用于评估,详见temporary license page。如用于商业用途,请通过pricing page购买完整许可证。许可证文件必须在运行时加载,如 Setup 部分所示。

阅读更多