在Word Online调用getOoxml()获取含公式文档时出现ooxmlIsMalformated错误
在Word Online中获取含数学公式的文档Ooxml的解决方法
转换公式格式临时解决
把插入的专业型公式转成线性格式:右键公式 → 选择「转换为线性」。转换后调用getOoxml()就能正常获取包含公式的文档Ooxml,缺点是会改变公式的显示样式,适合对格式要求不高的场景。用API单独提取公式再拼接
如果要保留专业公式格式,可通过getMath()方法单独提取公式的Ooxml,再和文档其他内容的Ooxml拼接。示例代码:Word.run(async (context) => { const body = context.document.body; // 获取所有数学公式对象 const mathObjects = body.getMath(); context.load(mathObjects, ['ooxml']); await context.sync(); // 获取不含公式的文档内容Ooxml const nonMathRange = body.getRange({exclude: mathObjects.items}); const nonMathOoxml = nonMathRange.getOoxml(); await context.sync(); // 自行处理公式与非公式部分的Ooxml拼接 console.log("非公式内容Ooxml:", nonMathOoxml.value); console.log("公式Ooxml集合:", mathObjects.items.map(item => item.ooxml)); }).catch(err => console.error(err));等待官方修复
这个ooxmlIsMalformated错误是Word Online对专业型公式的Ooxml序列化bug,微软已在部分版本中修复,建议确保加载项使用最新版Rich API,同时关注Office开发者中心的更新公告,等待全局修复推送。
内容的提问来源于stack exchange,提问作者Kees-Jan Hoogland
相关产品推荐
相关产品推荐

