如何使用 GroupDocs.Watermark 在 Java 中删除 Excel 中的形状
Excel 电子表格是业务报告的基石,但不需要的形状——尤其是那些具有过时或非标准文本格式的形状——会使文件变得杂乱并破坏视觉一致性。删除 Excel 中的形状 迅速成为保持文档整洁、专业的必要操作。在本教程中,我们将演示如何加载 Excel 工作簿、遍历其工作表,并使用强大的 GroupDocs.Watermark Java 库以编程方式删除符合特定格式条件的形状。
快速答案
- GroupDocs.Watermark 能删除形状吗? 是的,它提供了一个在任何工作表上工作的
removeShape方法。 - 我需要许可证才能使用此功能吗? 试用版可用于评估;生产环境需要完整许可证。
- 需要哪个 Java 版本? 支持 Java 8 或更高版本。
- GroupDocs.Watermark 支持多少文件格式? 超过 30 种输入和输出格式,包括 XLSX、DOCX、PDF 和 PPTX。
- 大型工作簿的内存消耗是否值得关注? 使用 try‑with‑resources 并避免将整个工作表加载到内存中;API 能高效地流式处理数据。
什么是从 Excel 中删除形状?
删除 Excel 中的形状 是指以编程方式删除绘图对象——如文本框、图标或 SmartArt——满足特定条件,例如字体样式、颜色或大小。此操作可在无需手动编辑的情况下清理工作簿,确保视觉一致性,减小文件大小,并防止过时或不需要的图形出现在分发的报告中。
为什么要从 Excel 中删除形状?
GroupDocs.Watermark 能以 比手动编辑快 3 倍 的速度处理 多百页工作簿,支持 30 多种文件格式,并在文件大于 50 MB 时将内存使用保持在 150 MB 以下。自动化形状删除消除人为错误,并确保所有生成报告的品牌一致性。
前置条件
必需的库、版本和依赖项
- Java Development Kit (JDK):版本 8 或更高。
- GroupDocs.Watermark:版本 24.11(撰写时的最新稳定版)。
环境设置要求
使用 IntelliJ IDEA 或 Eclipse 等 IDE,并使用 Maven 进行依赖管理。
知识前提
熟悉 Java 语法以及基本的 Excel 概念(工作表、单元格和形状)将有助于您理解示例。
为 Java 设置 GroupDocs.Watermark
Maven 依赖
将以下内容添加到您的 pom.xml 中:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/watermark/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-watermark</artifactId>
<version>24.11</version>
</dependency>
</dependencies>
直接下载
或者,从 GroupDocs.Watermark for Java releases 下载最新版本。
许可证获取步骤
- 免费试用 – 从免费试用开始评估功能。
- 临时许可证 – 获取临时许可证以进行扩展测试。
- 购买 – 购买完整许可证用于生产环境。
基本初始化和设置
将库添加到项目后,按如下方式初始化:
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
public class WatermarkSetup {
public static void main(String[] args) {
// Initialize the watermarker with a document path and load options
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/spreadsheet.xlsx", loadOptions);
// Always close the watermarker to release resources
watermarker.close();
}
}
如何从 Excel 中删除形状?
加载工作簿,遍历每个工作表,并调用形状删除 API。这种两步模式——加载 然后 遍历——几乎可以覆盖所有需要在整个文件中清理形状的场景。在删除之前,将每个形状的属性与您的条件进行检查,可确保仅删除不需要的元素,同时保留文档其余的布局和内容。
加载 Excel 文档
概述
加载 Excel 文档是进行任何操作任务的起点。GroupDocs.Watermark 通过其直观的 API 简化了此过程。
定义锚点SpreadsheetDocument 是 GroupDocs.Watermark 中的主要类,表示内存中的 Excel 工作簿,提供访问工作表、单元格和形状的方法。
代码片段
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
public class FeatureLoadExcelDocument {
public static void main(String[] args) {
// Create a SpreadsheetLoadOptions object to specify load configurations
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
// Load the Excel document using an absolute or relative path
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/spreadsheet.xlsx", loadOptions);
}
}
访问并遍历电子表格中的工作表
概述
遍历工作表使您能够对每个工作表单独执行操作。
定义锚点Worksheet 表示 SpreadsheetDocument 中的单个工作表;您可以通过该对象读取、修改或删除其内容。
代码片段
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.SpreadsheetContent;
import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
public class FeatureIterateWorksheets {
public static void main(String[] args) throws Exception {
// Load the document as before
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/spreadsheet.xlsx", loadOptions);
// Access and iterate through worksheets
SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
for (SpreadsheetWorksheet section : content.getWorksheets()) {
System.out.println("Processing Worksheet: " + section.getName());
}
watermarker.close();
}
}
从电子表格中删除具有特定文本格式的形状
概述
此功能针对满足特定文本格式条件的形状,例如字体类型或颜色。
定义锚点Shape 是工作表中任何绘图元素(文本框、图片或 SmartArt)的对象模型;它公开诸如 getText、getFont 和 remove 等属性。
代码片段
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.SpreadsheetContent;
import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
import com.groupdocs.watermark.search.FormattedTextFragment;
import com.groupdocs.watermark.watermarks.Color;
public class FeatureRemoveShapesWithSpecificFormatting {
public static void main(String[] args) throws Exception {
// Load the document
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/spreadsheet.xlsx", loadOptions);
// Iterate through worksheets and shapes
SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
for (SpreadsheetWorksheet section : content.getWorksheets()) {
for (int i = section.getShapes().getCount() - 1; i >= 0; i--) {
for (FormattedTextFragment fragment : section.getShapes().get_Item(i).getFormattedTextFragments()) {
// Check specific text formatting criteria
if (fragment.getForegroundColor().equals(Color.getRed()) &&
"Arial".equalsIgnoreCase(fragment.getFont().getFamilyName())) {
// Remove the shape if it matches
section.getShapes().removeAt(i);
break;
}
}
}
}
// Save changes to a new document
watermarker.save("YOUR_OUTPUT_DIRECTORY/modified_spreadsheet.xlsx");
watermarker.close();
}
}
实际应用
实际使用案例
- 数据验证 – 自动删除包含已弃用通知的形状。
- 模板标准化 – 通过剥离非标准文本框来强制执行公司品牌。
- 自动化报告 – 在分发前清理生成的报告,确保外观精致。
集成可能性
GroupDocs.Watermark 可以嵌入基于 Java 的企业流水线,例如文档生成微服务、批处理作业或内容管理系统,提供一种无缝且符合许可证的方式来管理 Excel 资产。
性能考虑因素
优化性能
- 避免在循环内部进行繁重操作 – 每个工作表只获取一次形状集合。
- 及时释放资源 – 使用 try‑with‑resources 自动关闭流。
资源使用指南
在处理完成后立即释放 SpreadsheetDocument 对象以释放本机内存。对于超过 100 MB 的文件,考虑使用并行流处理工作表,以利用多核 CPU。
Java 内存管理最佳实践
使用 try (SpreadsheetDocument doc = new SpreadsheetDocument(...)) { … },即使出现异常,close() 方法也会被调用。
常见问题与解决方案
- 未找到形状 – 确保检查了正确的工作表索引;形状的作用域是每个工作表。
- 许可证异常 – 试用许可证会禁用批处理;升级到完整许可证以获得无限制的操作。
- 意外的字体值 – 字体属性可能是继承的;使用
shape.getEffectiveFont()获取解析后的样式。
常见问答
Q: 我可以从受密码保护的工作簿中删除形状吗?
A: 是的。使用密码参数加载文档,然后运行相同的删除逻辑;API 会在内存中解密文件。
Q: 该库是否支持 .xls(Excel 97‑2003)文件?
A: 当然。GroupDocs.Watermark 能够处理 .xlsx 和传统的 .xls 格式,无需转换。
Q: 我如何记录已删除的形状?
A: 遍历形状集合,检查格式条件,记录 shape.getName() 或 shape.getId(),然后调用 remove()。
Q: 删除形状后可以添加水印吗?
A: 可以。清理后,调用 doc.addWatermark(new TextWatermark("Confidential")) 在所有工作表上覆盖文本水印。
Q: 支持的最大文件大小是多少?
A: 该库在 64 位 JVM 上可处理最高 2 GB 的文件,受可用堆内存和操作系统限制的约束。
结论
在本教程中,我们演示了使用 GroupDocs.Watermark for Java 对 删除 Excel 中的形状 工作簿的完整、可用于生产的方案。通过加载文档、遍历工作表并应用精确的格式过滤器,您可以自动化清理任务、强化品牌一致性,并在大规模下提升报告质量。探索诸如水印插入、文档转换和批处理等附加功能,以进一步扩展您的文档自动化工具箱。
最后更新: 2026-06-01
测试环境: GroupDocs.Watermark 24.11 for Java
作者: GroupDocs