在处理 Excel 数据时,你是否常常需要快速定位某些关键内容,并将其醒目地标记出来?无论是批量审查数据、提取地区信息,还是查找异常记录,“查找并高亮”功能都是提升效率的重要手段。本文将介绍如何使用 Java 实现在 Excel 中查找并高亮,包括在整个工作表中查找并高亮关键词;在单元格区域内查找并高亮和使用正则表达式查找更复杂的匹配项。 通过清晰的代码示例和逐步讲解,你将学会如何自动化查找 Excel 内容,并让目标数据一目了然。
安装专业的 Excel 库
在进入今天的正题前,我们先来看看本指南中用到的工具 —— Spire.XLS for Java。这是一个功能强大的 Java Excel 库,支持读取、编辑、转换工作簿等基础操作,也同样适用于更复杂的任务,比如查找并高亮、查找替换等。 你可以通过以下两种方式将它集成到你的项目中:
方案一:使用 Maven 安装
如果你的项目是基于 Maven 构建的,只需在 pom.xml
文件中添加以下依赖即可:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.6.3</version>
</dependency>
</dependencies>
方案二:手动集成 JAR 包
你也可以下载 Spire.XLS 的安装包,解压后将其中的 .jar
文件手动添加到你的 Java 编译器或构建路径中。
Java 在 Excel 工作表中查找并高亮数据
面对冗长复杂的 Excel 表格,把关键内容高亮标记无疑是一种高效做法。这样你一眼就能锁定所需信息,省去来回翻找的麻烦。好消息是,借助 Spire.XLS for Java,这件事可以用几行代码轻松搞定。接下来我们就看看,如何在整个工作表中查找并高亮目标文本。
Java 在 Excel 工作表中查找高亮数据的关键步骤:
- 创建 Workbook 对象并加载 Excel 文件
- 获取目标工作表
- 使用 Worksheet.findAllString() 方法查找所有匹配的文本
- 遍历匹配结果并设置高亮样式(如背景色)
- 保存修改后的文档。
下方是一个完整的代码实例,展示了怎样在第一个工作表中查找关键词“北美洲”并进行高亮:
import com.spire.xls.*;
import java.awt.*;
public class FindandHighlight {
public static void main(String[] args) {
// 加载示例文档
Workbook workbook = new Workbook();
workbook.loadFromFile("/美洲国家.xlsx");
// 获取第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 查找所有包含“北美洲”的文本
CellRange[] ranges = worksheet.findAllString("北美洲", true, true);
for (CellRange range : ranges)
{
// 设置高亮的颜色
range.getCellStyle().setColor(Color.yellow);
}
// 保存文档
workbook.saveToFile("/查找并高亮-工作表.xlsx", ExcelVersion.Version2010);
}
}
小提示:通过调整 findAllString()
方法中的参数,你可以灵活控制查找行为,比如是否区分大小写、是否使用正则表达式等。
Java 在单元格区域中查找并高亮数据
在实际工作中,比起遍历整个工作表,我们往往只需要在 Excel 的某一列、某几行,或特定区域中查找目标数据。比如只查找“客户名称”列中的关键词,就可以避免不相关字段的干扰。借助 Spire.XLS for Java,我们可以灵活地限定查找范围,实现在指定单元格区域中精准查找并高亮匹配内容。
Java 在单元格区域中查找并高亮数据的主要步骤:
- 创建 Workbook 类的实例并加载 Excel 源文件。
- 获取指定表格。
- 通过 Worksheet.getCellRange() 方法获取指定单元格区域。
- 使用 Worksheet.findAllString() 方法在该区域内查找匹配的文本
- 遍历匹配结果并设置高亮样式。
- 保存更新后的文件。
下方代码展示了如何在 A1:C13 区域内查找关键词“北美洲”并进行高亮标注:
import com.spire.xls.*;
import java.awt.*;
public class FindandHighlight {
public static void main(String[] args) {
// 加载示例文档
Workbook workbook = new Workbook();
workbook.loadFromFile("/美洲国家.xlsx");
// 获取第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取指定的单元格区域 A1:C13
CellRange specificRange = worksheet.getCellRange("A1:C13");
// 在指定区域内查找所有包含“北美洲”的文本
CellRange[] ranges = specificRange.findAllString("北美洲", true, true);
for (CellRange range : ranges)
{
// 设置高亮的颜色
range.getCellStyle().setColor(Color.yellow);
}
// 保存文档
workbook.saveToFile("/查找并高亮-指定区域.xlsx", ExcelVersion.Version2010);
}
}
Java 使用正则表达式查找并高亮
除了前面介绍的两种常见查找方式,还有一些更“灵活”的场景:比如你需要查找邮箱地址、电话号码、邮政编码等具有特定格式的数据,或者像“南美洲”和“北美洲”这样虽不完全一致但都包含“美洲”关键词的内容。在这类情况下,使用正则表达式进行查找就是一个非常高效且精准的选择。
在 Spire.XLS 中,只需调整 findAllString()
方法中的参数,即可启用正则表达式匹配,其它操作流程基本保持一致(详见在工作表中查找并高亮)。
使用正则表达式查找并高亮的关键点:
- 将 findAllString() 方法的第四个参数设置为 true,启用正则表达式模式;
- 通过通配符表达式(如 .南美.)灵活匹配多个相似内容。
下方是完整的代码示例,展示如何查找所有包含“南美”的内容,并对匹配项进行高亮:
import com.spire.xls.*;
import java.awt.*;
public class FindandHighlight {
public static void main(String[] args) {
// 加载示例文档
Workbook workbook = new Workbook();
workbook.loadFromFile("/美洲国家.xlsx");
// 获取第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// Find cell ranges using Regex
CellRange[] ranges = worksheet.findAllString(".*南美.", false, false, true);
String information = "";
for (int i = 0; i < ranges.length; i++) {
// 高亮匹配项
ranges[i].getCellStyle().setColor(Color.YELLOW);
}
// 保存文档
workbook.saveToFile("/查找并高亮-正则.xlsx", ExcelVersion.Version2010);
}
}
结尾
通过本文的讲解,相信你已经掌握了如何使用 Java 在 Excel 中查找并高亮数据,包括在指定区域查找和使用正则表达式匹配等进阶用法。借助 Spire.XLS for Java,这些功能都可以通过几行代码轻松实现。现在申请免费试用 Spire.XLS for Java 30天,助你高效处理各类 Excel 文件!
常见问题
1:能否设置不同关键词对应不同颜色?
可以。你可以遍历关键词数组,并在每次匹配后设置不同样式。
2:是否支持替换查找到的文本?
支持。首先使用 Worksheet.findAllString() 方法找到文本,然后使用 CellRange.setText() 方法替换该文本。