最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?獲取Word中所有的插入和刪除修訂的方法

 更新時間:2022年04月06日 10:26:13   作者:Tobemia  
這篇文章主要介紹了Java?獲取Word中所有插入和刪除修訂,在?Word?文檔中啟用跟蹤更改功能后,會記錄文檔中的所有編輯行為,例如插入、刪除、替換和格式更改。對插入或刪除的內(nèi)容,本文介紹獲取方法,需要的朋友可以參考下

在 Word 文檔中啟用跟蹤更改功能后,會記錄文檔中的所有編輯行為,例如插入、刪除、替換和格式更改。對插入或刪除的內(nèi)容,可通過本文中介紹的方法來獲取。

??引入Jar??

??方法1??

手動引入:將Free Spire.Doc for Java下載到本地,解壓,找到lib文件夾下的Spire.Doc.jar文件。在IDEA中打開如下界面,將本地路徑中的jar文件引入Java程序:?

Java 獲取Word中的所有插入和刪除修訂_java

??方法2??

通過Maven倉庫下載。如下配置pom.xml:

<repositories>
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>

??獲取插入、刪除的修訂??

  • 創(chuàng)建一個?Document ?實例并使用?Document.loadFromFile() ?方法加載一個示例 Word 文檔。
  • 創(chuàng)建一個?StringBuilder? 對象,然后使用?StringBuilder.append() ?方法記錄據(jù)。
  • 遍歷所有?Section? 和 section 中 body 下的每一個元素。
  • 使用?Paragraph.isInsertRevision()? 方法確定段落是否為插入修訂。如果是,請使用?Paragraph.getInsertRevision()? 方法獲取插入修訂。然后使用?EditRevision.getType()? 方法和?EditRevision.getAuthor() ?方法獲取修訂類型、作者。
  • 使用?Paragraph.inDeleteRevision()? 方法確定段落是否為刪除修訂。如果是,請使用?Paragraph.getDeleteRevision()? 方法獲取刪除修訂。然后使用?EditRevision.getType()? 方法和?EditRevision.getAuthor()? 方法獲取修訂類型、作者。
  • 遍歷段落中的所有元素以獲取文本范圍的修訂。
  • 使用?FileWriter.write()? 方法將StringBuilder 的內(nèi)容寫入 txt 文檔。

?Java?

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TextRange;
import com.spire.doc.formatting.revisions.EditRevision;
import com.spire.doc.formatting.revisions.EditRevisionType;

import java.io.FileWriter;

public class GetAllRevisions {
public static void main(String[] args)throws Exception {
//加載示例 Word 文檔
Document document = new Document();
document.loadFromFile("test.docx");

//創(chuàng)建一個 StringBuilder 對象以獲取插入修訂
StringBuilder insertRevision = new StringBuilder();
insertRevision.append("INSERT REVISIONS:"+"\n");
int index_insertRevision = 0;

//創(chuàng)建一個 StringBuilder 對象以獲取刪除修訂
StringBuilder deleteRevision = new StringBuilder();
deleteRevision.append("DELETE REVISIONS:"+"\n");
int index_deleteRevision = 0;

//遍歷所有節(jié)
for (Section sec : (Iterable<Section>) document.getSections())
{
//遍歷section中body下的元素
for(DocumentObject docItem : (Iterable<DocumentObject>)sec.getBody().getChildObjects())
{
if (docItem instanceof Paragraph)
{
Paragraph para = (Paragraph)docItem;
//確定段落是否為插入修訂
if (para.isInsertRevision())
{
index_insertRevision++;
insertRevision.append("Index: " + index_insertRevision + " \n");
//獲取插入修訂
EditRevision insRevison = para.getInsertRevision();

//獲取插入的段落文本內(nèi)容
String insertRevisionString = para.getText();

//獲取插入修訂類型
EditRevisionType insType = insRevison.getType();

insertRevision.append("Type: " + insType + " \n");
//獲取插入修訂作者
String insAuthor = insRevison.getAuthor();
insertRevision.append("Author: " + insAuthor + " \n" + "InsertPara:"+ insertRevisionString );

}

//確定段落是否為刪除修訂
if (para.isDeleteRevision())
{
index_deleteRevision++;
deleteRevision.append("Index: " + index_deleteRevision + " \n");
EditRevision delRevison = para.getDeleteRevision();
EditRevisionType delType = delRevison.getType();
deleteRevision.append("Type: " + delType + " \n");
String delAuthor = delRevison.getAuthor();
deleteRevision.append("Author: " + delAuthor + " \n");
}
//遍歷段落中的元素
for(DocumentObject obj : (Iterable<DocumentObject>)para.getChildObjects())
{
if (obj instanceof TextRange)
{
TextRange textRange = (TextRange)obj;

//確定文本范圍是否為刪除修訂,并獲取刪除修訂的類型、作者及刪除的文本內(nèi)容。
if (textRange.isDeleteRevision())
{
index_deleteRevision++;
deleteRevision.append("Index: " + index_deleteRevision +" \n");
EditRevision delRevison = textRange.getDeleteRevision();
EditRevisionType delType = delRevison.getType();
deleteRevision.append("Type: " + delType+ " \n");
String delAuthor = delRevison.getAuthor();
deleteRevision.append("Author: " + delAuthor + " \n");
String deletetext = textRange.getText();
deleteRevision.append("Delete text:" + deletetext +" \n");
}

//確定文本范圍是否為插入修訂,并獲取插入修訂的類型、作者及文本內(nèi)容。
else if (textRange.isInsertRevision())
{
index_insertRevision++;
insertRevision.append("Index: " + index_insertRevision +" \n");
EditRevision insRevison = textRange.getInsertRevision();
EditRevisionType insType = insRevison.getType();
insertRevision.append("Type: " + insType + " \n");
String insAuthor = insRevison.getAuthor();
insertRevision.append("Author: " + insAuthor + " \n");
String insertText = textRange.getText();
insertRevision.append("insertText:"+insertText);
}
}
}
}
}
}
//保存插入修訂內(nèi)容為txt 文件
FileWriter writer1 = new FileWriter("insertRevisions.txt");
writer1.write(insertRevision.toString());
writer1.flush();
writer1.close();

//保存刪除修訂內(nèi)容為txt 文件
FileWriter writer2 = new FileWriter("deleteRevisions.txt");
writer2.write(deleteRevision.toString());
writer2.flush();
writer2.close();
}
}

獲取結(jié)果:

Java 獲取Word中的所有插入和刪除修訂_Word_02

到此這篇關于Java 獲取Word中所有的插入和刪除修訂的方法的文章就介紹到這了,更多相關獲取Word插入和刪除修訂內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot2.2.2集成dubbo的實現(xiàn)方法

    springboot2.2.2集成dubbo的實現(xiàn)方法

    這篇文章主要介紹了springboot2.2.2集成dubbo的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • SpringBoot使用AOP實現(xiàn)統(tǒng)計全局接口訪問次數(shù)詳解

    SpringBoot使用AOP實現(xiàn)統(tǒng)計全局接口訪問次數(shù)詳解

    這篇文章主要介紹了SpringBoot通過AOP實現(xiàn)對全局接口訪問次數(shù)的統(tǒng)計,文章從相關問題展開全文內(nèi)容詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • 關于LocalDateTime使用詳解

    關于LocalDateTime使用詳解

    這篇文章主要介紹了關于LocalDateTime使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Springboot接收文件與發(fā)送文件實例教程

    Springboot接收文件與發(fā)送文件實例教程

    最近工作中遇到個需求,springboot簡單的上傳文檔或者圖片,并且進行操作,操作完后進行保存指定路徑,下面這篇文章主要給大家介紹了關于Springboot接收文件與發(fā)送文件的相關資料,需要的朋友可以參考下
    2023-05-05
  • Idea使用插件實現(xiàn)逆向工程搭建SpringBoot項目的圖文教程

    Idea使用插件實現(xiàn)逆向工程搭建SpringBoot項目的圖文教程

    這篇文章主要介紹了Idea使用插件實現(xiàn)逆向工程搭建SpringBoot項目,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • JAVA實戰(zhàn)項目實現(xiàn)客戶選購系統(tǒng)詳細流程

    JAVA實戰(zhàn)項目實現(xiàn)客戶選購系統(tǒng)詳細流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個簡單的客戶選購系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • Spring 中使用反射創(chuàng)建 Bean 實例的幾種方式

    Spring 中使用反射創(chuàng)建 Bean 實例的幾種方式

    文章介紹了在Spring框架中如何使用反射來創(chuàng)建Bean實例,包括使用Class.newInstance()、Constructor.newInstance()、工廠方法以及Spring的BeanUtils工具類,文章還強調(diào)了反射操作的注意事項,如異常處理、性能、安全性以及類型安全,感興趣的朋友一起看看吧
    2025-03-03
  • Java中的CountDownLatch閉鎖詳解

    Java中的CountDownLatch閉鎖詳解

    這篇文章主要介紹了Java中的CountDownLatch閉鎖詳解,CountDownLatch用給定的計數(shù)初始化,await屬于阻塞方法,直到當前計數(shù)達到零,由于countDown方法被調(diào)用,然后釋放所有await等待的線程,并立即返回線程后續(xù)的await調(diào)用邏輯,需要的朋友可以參考下
    2023-12-12
  • Java volatile 關鍵字介紹與使用示例詳解

    Java volatile 關鍵字介紹與使用示例詳解

    這篇文章詳細介紹了Java中的volatile關鍵字,包括它的核心特性、如何保證變量的可見性和有序性,以及它在解決多線程問題中的局限性,文章通過示例展示了如何在實際編程中使用volatile,并解釋了如何通過其他同步機制來彌補volatile的不足,感興趣的朋友一起看看吧
    2025-01-01
  • java 實現(xiàn)約瑟夫環(huán)的實例代碼

    java 實現(xiàn)約瑟夫環(huán)的實例代碼

    這一次是借鑒模仿別人寫的代碼,以前覺得不好將數(shù)據(jù)結(jié)構的鏈結(jié)構什么的遷移到java上來使用,但這一次確實讓我感受到了可以自己構造數(shù)據(jù)結(jié)構,然后使用類似鏈的方式來解決約瑟夫環(huán),有所頓悟。不多說,繼續(xù)上代碼
    2013-10-10

最新評論

乌拉特中旗| 工布江达县| 桦南县| 玉龙| 田阳县| 梁山县| 合肥市| 垫江县| 秭归县| 渑池县| 竹北市| 丰镇市| 阿图什市| 靖江市| 金川县| 昌江| 墨竹工卡县| 昌图县| 舞阳县| 邮箱| 阜康市| 福清市| 高雄市| 海南省| 灵川县| 宜川县| 莆田市| 湖口县| 鹤峰县| 民和| 横山县| 乌拉特前旗| 车致| 关岭| 奎屯市| 子洲县| 六盘水市| 麻城市| 河津市| 咸阳市| 吉林省|