0

0

Java怎么获取Word中所有的插入和删除修订

WBOY

WBOY

发布时间:2023-04-19 13:58:03

|

2022人浏览过

|

来源于亿速云

转载

    word 文档中启用跟踪更改功能后,会记录文档中的所有编辑行为,例如插入、删除、替换和格式更改。对插入或删除的内容,可通过本文中介绍的方法来获取。

    引入Jar

    方法1

    手动引入:将Free Spire.Doc for Java下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

    Java怎么获取Word中所有的插入和删除修订

    方法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>

    获取插入、删除的修订

    • 创建一个Document 实例并使用Document.loadFromFile() 方法加载一个示例 Word 文档。

      立即学习Java免费学习笔记(深入)”;

    • 创建一个StringBuilder 对象,然后使用StringBuilder.append() 方法记录据。

    • 遍历所有Section 和 section 中 body 下的每一个元素。

    • 使用Paragraph.isInsertRevision() 方法确定段落是否为插入修订。如果是,请使用Paragraph.getInsertRevision() 方法获取插入修订。然后使用EditRevision.getType() 方法和EditRevision.getAuthor() 方法获取修订类型、作者。

      LLaMA
      LLaMA

      Meta公司发布的下一代开源大型语言模型

      下载
    • 使用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中所有的插入和删除修订

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    WorkBuddy
    WorkBuddy

    腾讯云推出的AI原生桌面智能体工作台

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    Java Maven专题
    Java Maven专题

    本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

    0

    2025.09.15

    pdf怎么转换成xml格式
    pdf怎么转换成xml格式

    将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    1948

    2024.04.01

    xml怎么变成word
    xml怎么变成word

    步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

    2119

    2024.08.01

    xml是什么格式的文件
    xml是什么格式的文件

    xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

    1168

    2024.11.28

    append用法
    append用法

    append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

    349

    2023.10.25

    python中append的用法
    python中append的用法

    在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

    1080

    2023.11.14

    python中append的含义
    python中append的含义

    本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

    186

    2025.09.12

    idea快捷键大全
    idea快捷键大全

    本专题为大家提供idea快捷键相关的文章,帮助大家解决问题。

    174

    2023.08.03

    C# ASP.NET Core微服务架构与API网关实践
    C# ASP.NET Core微服务架构与API网关实践

    本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

    76

    2026.03.11

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Kotlin 教程
    Kotlin 教程

    共23课时 | 4.4万人学习

    C# 教程
    C# 教程

    共94课时 | 11.2万人学习

    Java 教程
    Java 教程

    共578课时 | 81.2万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号