在 word 文档中启用跟踪更改功能后,它会记录文档中的所有编辑行为,例如插入、删除、替换和格式更改。跟踪更改是一项很棒的功能,可让您查看文档进行了哪些更改。本教程展示了如何使用 spire.doc for java 获取 word 中所有修订。
安装 spire.doc for java
首先,您需要在 java 程序中添加 spire.doc.jar 文件作为依赖项。jar 文件可以从此链接下载。如果您使用 maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 jar 文件。
com.e-iceblue
e-iceblue
https://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.doc
5.3.16
获取 word 中所有修订
详细步骤如下。
- 创建一个 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.*; import com.spire.doc.fields.*; import com.spire.doc.formatting.revisions.*; import java.io.filewriter; public class getrevisions { public static void main(string[] args) throws exception { //加载示例 word 文档 document document = new document(); document.loadfromfile("c:\\users\\administrator\\desktop\\test file.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
) document.getsections()) { //遍历section中body下的元素 for(documentobject docitem : (iterable
)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(); //获取插入修订类型 editrevisiontype instype = insrevison.gettype(); insertrevision.append("type: " instype "\n"); //获取插入修订作者 string insauthor = insrevison.getauthor(); insertrevision.append("author: " insauthor "\n"); } //确定段落是否为删除修订 else 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 )para.getchildobjects()) { if (obj instanceof textrange) { textrange textrange = (textrange)obj; //确定文本范围是否为插入修订 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"); } else 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"); } } } } } } //保存到 .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(); } }
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。 获取有效期 30 天的临时许可证。