You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenXmlPowerTools报“文档已开启修订跟踪”错误的解决问询

解决OpenXmlPowerTools替换文本时的修订跟踪异常问题

问题原因

即使Office 365在线编辑器显示“跟踪更改”已关闭且无跟踪内容,Word文档的底层OpenXML结构中可能仍残留修订相关元素,导致OpenXmlPowerTools触发“文档已开启修订跟踪”的异常。

解决方案

方法一:先清除文档中的所有修订痕迹

在执行文本替换前,先用OpenXML SDK处理文档,彻底关闭修订跟踪并接受所有残留的修订:

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

// 先处理文档的修订问题
using (var wordDoc = WordprocessingDocument.Open(FileName, true))
{
    var settingsPart = wordDoc.MainDocumentPart.DocumentSettingsPart;
    var docSettings = settingsPart.Settings;

    // 关闭修订跟踪功能
    var trackRevisions = docSettings.Elements<TrackRevisions>().FirstOrDefault();
    if (trackRevisions != null)
        trackRevisions.Remove();
    docSettings.AppendChild(new TrackRevisions { Val = false });

    // 接受所有类型的修订,保留最终内容
    var document = wordDoc.MainDocumentPart.Document;
    // 处理插入型修订
    foreach (var insertion in document.Descendants<Insertion>().ToList())
    {
        insertion.Parent.ReplaceChild(insertion.CloneNode(true), insertion);
    }
    // 处理删除型修订
    foreach (var deletion in document.Descendants<Deletion>().ToList())
    {
        deletion.Remove();
    }
    // 处理格式修改型修订
    foreach (var formatChange in document.Descendants<FormattingChange>().ToList())
    {
        formatChange.Remove();
    }

    wordDoc.Save();
}

// 执行原本的文本替换逻辑
OpenXmlPowerTools.WmlDocument doc = new OpenXmlPowerTools.WmlDocument(FileName);
foreach (MergeCode mc in mergeCodes)
    doc = doc.SearchAndReplace(mc.Code, mc.Value, true);

方法二:直接用OpenXML SDK执行文本替换(绕过OpenXmlPowerTools的检查)

如果不需要依赖OpenXmlPowerTools的SearchAndReplace,也可以直接用OpenXML SDK遍历文档内容进行替换,此方式不受修订跟踪状态影响:

using (var wordDoc = WordprocessingDocument.Open(FileName, true))
{
    var body = wordDoc.MainDocumentPart.Document.Body;
    foreach (var text in body.Descendants<Text>())
    {
        if (text.Text.Contains("[CaseNo]"))
        {
            text.Text = text.Text.Replace("[CaseNo]", "你的目标数字");
        }
    }
    wordDoc.Save();
}

注意事项

  • 处理修订时要确保覆盖所有类型的修订元素(插入、删除、格式更改等),避免残留问题。
  • 操作前建议备份原始文档,防止内容丢失。

内容的提问来源于stack exchange,提问作者Brian Heward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:32:13