在 Word 文档中启用跟踪更改功能后,会记录文档中的所有编辑行为,例如插入、删除、替换和格式更改。对插入或删除的内容,可通过本文中介绍的方法来获取。
??引入Jar??
??方法1??
手动引入: 将Free Spire.Doc for Java下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:?
??方法2??
通过Maven仓库下载。如下配置pom.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<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 ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
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中所有的插入和删除修订的方法的文章就介绍到这了,更多相关获取Word插入和删除修订内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.51cto测试数据/miayo/5169842
查看更多关于Java 获取Word中所有的插入和删除修订的方法的详细内容...