Word 2016 MSO中body.getOoxml()丢失编号包部件问题咨询
Word 2016 MSO插件中getOoxml()丢失编号部件导致自定义编号重置问题
问题概述
在Word 2016 MSO的插件中调用body.getOoxml()时,返回的OOXML未包含编号包部件。执行insertOoxml()后,API要么抛出错误,要么自动生成默认的标准编号(如1、2、3),导致原本使用小写字母、罗马字母等自定义逻辑的编号被强制重置为标准格式。
环境详情
- Word版本:2016 MSO 16.0.5369.1000(32位,运行于Windows 10)
- 插件运行环境:依赖IE 11内核
- Office.js版本:1.1.82(1.1.83-custom.0版本在Word 2016中执行
insertOoxml()会直接抛出异常) - 对比环境:Word for M365中该功能可正常工作
业务背景
我们的业务场景是清除Word文档中的敏感数据,由于Word JS API 1.1版本不支持处理超链接,因此必须通过操作OOXML来完成超链接的修复工作。
重现步骤
- 创建新的Word文档
- 添加1-2个标题段落
- 将标题的编号格式修改为“a、b、c”样式
- 在插件中执行以下代码:
var body = context.document.body; var body_ooxml = body.getOoxml(); await context.sync(); var body_ooxml_value = body_ooxml.value; body.insertOoxml(body_ooxml_value, Word.InsertLocation.replace); await context.sync();
预期与实际结果
- 预期结果:文档内容完全保留,编号格式无任何变更
- 实际结果:自定义编号被重置为默认的1、2、3标准格式
关键测试发现
经多次验证确认:Word 2016 MSO中getOOXML()方法返回的内容不包含编号相关部件(但文档本身的numbering.xml文件存在且内容正确)。执行insertOoxml()时,API会重新生成编号定义,直接覆盖原有的numbering.xml为标准编号配置。
求助内容
目前未找到可行的临时解决方案,恳请社区提供相关建议。此问题属于产品bug,需要官方修复。
内容的提问来源于stack exchange,提问作者Balo
相关产品推荐
相关产品推荐

