在电子表格中嵌入水印有助于保护敏感数据并表明文档所有权。 Conholdate.Total for Java 提供了一个直接的 API,只需几行代码即可在 Java 中向 Excel 插入水印。本指南将带您完成所需的设置、完整的实现以及关键的配置选项,帮助您高效地保护 Excel 工作簿。
如何在 Java 中为 Excel 插入水印 - 步骤指南
使用 ExcelLoadOptions 加载工作簿
- 加载 Excel 工作簿:使用
Watermarker与ExcelLoadOptions一起打开文件。
Watermarker watermarker = new Watermarker(inputPath, new ExcelLoadOptions());
Watermarker 类的文档位于 API 参考。使用 ExcelLoadOptions 加载可让您控制内存使用,这对于大型工作簿至关重要。
创建带样式的文本水印
- 创建文本水印:定义字体、颜色、不透明度、旋转角度和对齐方式。
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 度的旋转则使其在工作表上呈对角线排列。您可以根据品牌指南或合规要求调整这些数值。
将水印应用于所有工作表
- 将水印添加到工作簿:
add方法在一次调用中将其应用于每个工作表。
watermarker.add(watermark);
如果需要对每个工作表进行单独控制,您可以通过 watermarker.getWorksheets() 检索各个工作表,并对每个工作表分别调用 add。
保存带水印的工作簿
- 保存带水印的工作簿:选择
ExcelSaveOptions来控制输出格式并保留原始元数据。
watermarker.save(outputPath, new ExcelSaveOptions());
ExcelSaveOptions 对象允许您指定是保留原始文件版本还是升级到最新的 XLSX 标准。
释放资源以避免内存泄漏
- 关闭 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.xlsx、output_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) 来启用流式模式。这可以显著降低内存消耗。
丰富的水印样式选项
您可以控制字体系列、大小、颜色、不透明度、旋转角度和对齐方式。下表概述了最常调整的属性:
| 属性 | 示例值 | 影响 |
|---|---|---|
| Font | new Font("Arial", 36) | 确定水印文本的视觉样式。 |
| Color | Color.RED | 设置水印颜色;接受任何 RGB 值。 |
| Opacity | 0.3 (30%) | 控制透明度;数值越低,水印越不显眼。 |
| Rotation Angle | 45 degrees | 将水印倾斜放置,以获得更好的覆盖范围。 |
| Horizontal Alignment | HorizontalAlignment.Center | 水平放置水印。 |
| Vertical Alignment | VerticalAlignment.Center | 垂直放置水印。 |
自动工作表覆盖
一次调用 watermarker.add(watermark) 即可将水印传播到每个工作表,免去编写重复循环的麻烦。
简单保存选项
ExcelSaveOptions 允许您保留原始文件格式或升级到最新的 XLSX 版本,您还可以指定是否保留宏。
所有这些功能在官方文档中有详细描述。
结论
在本教程中,您学习了如何使用 Conholdate.Total for Java 的强大功能在 Java 中向 Excel 插入水印。通过遵循一步一步的指南,您可以使用自定义文本保护电子表格,控制外观,并高效处理大文件。对于生产部署,您需要获得授权版本;请在定价页面查看价格,并从临时许可证页面获取临时许可证以评估 SDK。
常见问题
如何添加图像水印而不是文本?
使用ImageWatermark类,设置其不透明度和对齐方式,并像文本示例一样将其添加到Watermarker实例中。图像可以是 PNG、JPEG、或 BMP,您还可以将其缩放以适应工作表。有关详细信息,请参阅 API 参考。将工作簿转换为PDF后水印会可见吗?
是的。水印已嵌入工作簿,在以后使用Conholdate.Total for Java转换为任何格式(如 PDF)时都会出现。转换过程会保留所有视觉元素,包括水印。我可以在每个工作表层面控制水印吗?
SDK 默认将水印应用于所有工作表,但您可以使用watermarker.getWorksheets().get_Item(index)加载单个工作表,并有选择地对每个工作表调用add。这为需要在每张表上使用不同品牌的报告提供了细粒度的控制。我需要为开发和测试获取许可证吗?
临时许可证可用于评估,详见temporary license page。如用于商业用途,请通过pricing page购买完整许可证。许可证文件必须在运行时加载,如 Setup 部分所示。
