Java 獲取Word中的所有插入和刪除修訂
在 Word 文件中啟用跟蹤更改功能後,會記錄文件中的所有編輯行為,例如插入、刪除、替換和格式更改。對插入或刪除的內容,可通過本文中介紹的方法來獲取。
引入Jar
方法1
手動引入:將Free Spire.Doc for Java下載到本地,解壓,找到lib資料夾下的Spire.Doc.jar檔案。在IDEA中開啟如下介面,將本地路徑中的jar檔案引入Java程式:
方法2
通過Maven倉庫下載。如下配置pom.xml:
<repositories> <repository> <id>com.e-iceblue</id> <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(); } }
獲取結果:
—END—
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499788/viewspace-2885372/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在Word 2007 文件中插入和刪除超連結?
- Java 設定、刪除、獲取Word文件背景(基於Spire.Cloud.SDK for Java)JavaCloud
- cookie的設定、獲取和刪除Cookie
- 透過C#在Word中插入或刪除分節符C#
- O(1) 時間插入、刪除和獲取隨機元素,允許元素重複隨機
- Java 獲取Word字數Java
- C++ forward_list 中插入和刪除操作C++Forward
- Java 獲取Word中的標題大綱(目錄)Java
- LeetCode381. O(1) 時間插入、刪除和獲取隨機元素 - 允許重複LeetCode隨機
- aspose word指定位置插入圖片,藉助word模板檔案中的書籤來定位 及Java 獲取網路圖片Java
- Java 讀取Word表格中的文字和圖片Java
- Java 獲取Word批註所標記的文字和圖片Java
- Cookie新增、獲取以及刪除操作Cookie
- docker刪除所有容器和映象命令Docker
- 在 JDBC 中獲取插入 IDJDBC
- SQL基礎——DML(插入、修改和刪除)SQL
- 如何獲取java類中的欄位修飾符?Java
- word(2016)從第三頁插入頁碼以及刪除表格後的空白頁
- 如何刪除Word文件中的全部超連結
- Java 新增、刪除、格式化Word中的圖片( 基於Spire.Cloud.SDK for Java )JavaCloud
- Unfolder使用教程:如何插入,刪除和更新物件物件
- Java實現二叉搜尋樹的插入、刪除Java
- 刪除字串中的所有相鄰重複項字串
- Word 刪除載入項
- 如何快速刪除Word中的頁首橫線?刪除頁首橫線技巧分享
- Java 新增、刪除、替換、格式化Word中的文字(基於Spire.Cloud.SDK for Java)JavaCloud
- Java 新增、讀取、刪除Excel中的圖表趨勢線JavaExcel
- Python Flask,cookie,設定、獲取、刪除cookiePythonFlaskCookie
- 刪除所有正在執行和退出的docker例項Docker
- mysql 資料插入和更新及刪除詳情FSSHMySql
- Ionic 3和Angular 4:使用基於令牌的Restful API插入和刪除AngularRESTAPI
- [M設計+雜湊表] lc380. 常數時間插入、刪除和獲取隨機元素(設計+雜湊表)隨機
- 獲取gridview所有行的idView
- Mysql在資料插入後立即獲取插入的IdMySql
- 刪除PPT中所有動畫動畫
- word內容被刪除怎麼辦?word內容被刪除了的恢復方法
- Python 在Excel中插入、替換、提取、或刪除圖片PythonExcel
- Java獲取Object中Value的方法JavaObject