需求介紹
我有一個(gè)含有大量數(shù)據(jù)資料的Excel文檔,現(xiàn)需要對(duì)其中的一個(gè)或多個(gè)單元格的數(shù)據(jù)進(jìn)行修改。請(qǐng)問(wèn)如何才能用Java代碼快速查找到指定數(shù)據(jù),然后用新文本將其替換并高亮?例如,在下圖所示的Excel文檔中,我需要用“研發(fā)部”來(lái)替換紅色邊框里的“人資部”并用底色高亮顯示最終數(shù)據(jù)。

解決方案
通過(guò)調(diào)查和測(cè)試,最終發(fā)現(xiàn)了一個(gè)效果極佳的免費(fèi)控件Free?Spire.XLS for Java。現(xiàn)將操作步驟和代碼示例分享出來(lái),可供有需要的人參考。
測(cè)試環(huán)境搭建
在運(yùn)行代碼前,需要搭建代碼測(cè)試環(huán)境。首先,請(qǐng)確保你電腦上安裝配置好JDK和Intellij IDEA;然后將Free Spire.XLS for Java控件里的Jar包導(dǎo)入IDEA中即可。
這里重點(diǎn)介紹下Jar包的兩種導(dǎo)入方式:其一,在官網(wǎng)上下載Free Spire.XLS for Java產(chǎn)品包,解壓后將lib文件夾下的Spire.Xls.jar手動(dòng)導(dǎo)入IDEA。其二(推薦使用),在IDEA中創(chuàng)建一個(gè)Maven項(xiàng)目,然后在pom.xml文件中鍵入以下代碼,最后點(diǎn)擊“Import Changes”即可。具體詳細(xì)步驟可參考此教程。
<repositories>
???????<repository>
???????????<id>com.e-iceblue</id>
???????????<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
???????</repository>
??? </repositories>
<dependencies>
??? <dependency>
???????<groupId>e-iceblue</groupId>
???????<artifactId>spire.xls.free</artifactId>
???????<version>3.9.1</version>
??? </dependency>
</dependencies>
最終Jar包導(dǎo)入效果如下圖所示:

代碼示例
import com.spire.xls.*;
import java.awt.*;
public class FindReplaceAndHighlightData {
public static void main(String[] args) {
//加載示例Excel文檔
Workbook workbook = new Workbook();
workbook.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
//獲取第一個(gè)工作表
Worksheet sheet =workbook.getWorksheets().get(0);
//查找工作表中的指定文字
CellRange[] ranges = sheet.findAllString("人資部", true, true);
for (CellRangerange : ranges)
??????? {
//用新文本替換指定文字
range.setText("研發(fā)部");
//設(shè)置高亮顏色
range.getStyle().setColor(Color.yellow);
??????? }
//保存結(jié)果文檔
workbook.saveToFile("output/replaceAndHighlight.xlsx",ExcelVersion.Version2010;
??? }
}
效果圖:
