您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java怎么獲取Word中所有的插入和刪除修訂”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java怎么獲取Word中所有的插入和刪除修訂”文章能幫助大家解決問題。
在 Word 文檔中啟用跟蹤更改功能后,會記錄文檔中的所有編輯行為,例如插入、刪除、替換和格式更改。對插入或刪除的內容,可通過本文中介紹的方法來獲取。
手動引入:將Free Spire.Doc for Java下載到本地,解壓,找到lib文件夾下的Spire.Doc.jar文件。在IDEA中打開如下界面,將本地路徑中的jar文件引入Java程序:
通過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>
創建一個Document 實例并使用Document.loadFromFile() 方法加載一個示例 Word 文檔。
創建一個StringBuilder 對象,然后使用StringBuilder.append() 方法記錄據。
遍歷所有Section 和 section 中 body 下的每一個元素。
使用Paragraph.isInsertRevision() 方法確定段落是否為插入修訂。如果是,請使用Paragraph.getInsertRevision() 方法獲取插入修訂。然后使用EditRevision.getType() 方法和EditRevision.getAuthor() 方法獲取修訂類型、作者。
使用Paragraph.inDeleteRevision() 方法確定段落是否為刪除修訂。如果是,請使用Paragraph.getDeleteRevision() 方法獲取刪除修訂。然后使用EditRevision.getType() 方法和EditRevision.getAuthor() 方法獲取修訂類型、作者。
遍歷段落中的所有元素以獲取文本范圍的修訂。
使用FileWriter.write() 方法將StringBuilder 的內容寫入 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"); //創建一個 StringBuilder 對象以獲取插入修訂 StringBuilder insertRevision = new StringBuilder(); insertRevision.append("INSERT REVISIONS:"+"\n"); int index_insertRevision = 0; //創建一個 StringBuilder 對象以獲取刪除修訂 StringBuilder deleteRevision = new StringBuilder(); deleteRevision.append("DELETE REVISIONS:"+"\n"); int index_deleteRevision = 0; //遍歷所有節 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(); //獲取插入的段落文本內容 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; //確定文本范圍是否為刪除修訂,并獲取刪除修訂的類型、作者及刪除的文本內容。 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"); } //確定文本范圍是否為插入修訂,并獲取插入修訂的類型、作者及文本內容。 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); } } } } } } //保存插入修訂內容為txt 文件 FileWriter writer1 = new FileWriter("insertRevisions.txt"); writer1.write(insertRevision.toString()); writer1.flush(); writer1.close(); //保存刪除修訂內容為txt 文件 FileWriter writer2 = new FileWriter("deleteRevisions.txt"); writer2.write(deleteRevision.toString()); writer2.flush(); writer2.close(); } }
獲取結果:
關于“Java怎么獲取Word中所有的插入和刪除修訂”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。