日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java库 学习笔记 - POI 在Word文档中查找指定关键字并设置背景色

發布時間:2023/12/10 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java库 学习笔记 - POI 在Word文档中查找指定关键字并设置背景色 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨手測試,有空再研究。

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.8</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.8</version></dependency>

思路:逐個遍歷所有段落,將其拆分為3部分。
關鍵字之前的文字 + 關鍵字 + 關鍵字之后的文字。
然后對關鍵字對象進行替換設置。
最后再把三部分拼回去。(相當于替換掉了原來的段落)
如果有多個關鍵字,可以考慮段落.split(關鍵字)

package com.excel.demo;import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream;public class WOo {public static void main(String[] args) {File file = new File("C:\\test.docx");String str = "";try {FileInputStream fis = new FileInputStream(file);XWPFDocument xdoc = new XWPFDocument(fis);// XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);String sourceStr = "原字符串";String targetStr = "替換為字符串";String targetColor = "ff0000"; // 紅字String targetBgColor = "ffff00"; // 黃底for (int i = 0; i < xdoc.getParagraphs().size(); i++) {XWPFParagraph xwpfParagraph = xdoc.getParagraphs().get(i);if(xwpfParagraph.getText().contains(sourceStr)) {// 取出純文本String text = xwpfParagraph.getText();// ---------- 拆分段落為:前,關鍵字,后 三個run ----------String begin = text.substring(0, text.indexOf(sourceStr)); // 取出段落中關鍵字之前的內容String end = text.substring(text.indexOf(sourceStr) + sourceStr.length); // 取出段落中關鍵字之后的內容XWPFRun run = xwpfParagraph.getRuns().get(0).getParagraph().createRun(); // 創建 run 用來替換原內容// 替換文字run.setColor(targetColor); // 文字顏色run.setText(targetStr); // 文字內容run.setBold(true); // 設置加粗// 設置背景色CTShd cTShd = run.getCTR().addNewRPr().addNewShd(); // 向run中添加一個 cTShd,應該就是對應vba中的shading對象cTShd.setVal(STShd.CLEAR);cTShd.setColor("auto"); cTShd.setFill(targetBgColor);// ---------- 拼回段落 ----------xwpfParagraph.getRuns().get(0).getParagraph().createRun().setText(begin);xwpfParagraph.getRuns().get(0).getParagraph().addRun(run); xwpfParagraph.getRuns().get(0).getParagraph().createRun().setText(end);xwpfParagraph.getRuns().get(0).getParagraph().removeRun(0);break;}}OutputStream os= new FileOutputStream("C:\\test2.docx");xdoc.write(os);fis.close();} catch (Exception e) {e.printStackTrace();}} }

參考資料

簡書:Apache POI自動生成Word文檔(帶目錄)
Apache POI - Javadocs
org.apache.poi.xwpf.usermodel.XWPFParagraph
org.apache.poi.xwpf.usermodel.XWPFRun

總結

以上是生活随笔為你收集整理的Java库 学习笔记 - POI 在Word文档中查找指定关键字并设置背景色的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。