Word insertOoxml 方法返回错误:所有输入都未知
Posted
技术标签:
【中文标题】Word insertOoxml 方法返回错误:所有输入都未知【英文标题】:Word insertOoxml method returning Error: Unknown for all input 【发布时间】:2019-02-05 02:35:54 【问题描述】:我有一个现有的 Word 加载项解决方案,该解决方案长期以来一直运行良好,但现在无法将 OOXML 内容插入 Word 文档。试图打破这一点,我无法让 insertOoxml 方法在任何情况下工作。
复制:
await Word.run(async (context) =>
context.document.getSelection().insertOoxml(theOoxml, 'Start');
await context.sync();
);
其中 theOoxml 可以是任何有效的 Ooxml 字符串。我一直在使用的参考示例是:
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
<pkg:xmlData>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml" />
</Relationships>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
<pkg:xmlData>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid wp14">
<w:body>
<w:p>
<w:r>
<w:t>
Hey there
</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
</pkg:package>
但也试过其他参考例子:https://docs.microsoft.com/en-us/office/dev/add-ins/word/create-better-add-ins-for-word-with-office-open-xml
结果:
word-web-16.00.debug.js:11162 Uncaught (in promise) 错误:未知 在新的 RuntimeError (word-web-16.00.debug.js:11162) 在 RequestContext.ClientRequestContext.processRequestExecutorResponseMessage (word-web-16.00.debug.js:13713) 在 word-web-16.00.debug.js:13620
在不同的租户、浏览器中尝试过,这让我有点发疯。如果这对您有用,请告诉我您的一般配置/设置。
谢谢。
更新:
为避免有关 XML 本身有效性的问题,以下代码获取当前选择的 OOXML,然后在选择后复制它 - 也会失败并出现相同的错误。
await Word.run(async (context) =>
var sourceRange = context.document.getSelection();
var contentToCopy = sourceRange.getOoxml();
await context.sync();
sourceRange.insertOoxml(contentToCopy.value, 'After');
await context.sync();
);
希望我在这里缺少一些简单的东西。任何关于插入 any Ooxml 片段的建议/解决方法表示赞赏。
2018 年 9 月 4 日更新: Microsoft 已确认此问题并将修复它。
2018 年 9 月 12 日更新: InsertOoxml 似乎又可以正常工作了——尽管我还没有得到 Microsoft 的确认。
【问题讨论】:
这是无效的 Word Open XML:<w:p>Hey there</w:p>
它缺少应该出现的文本周围的 <w:r><w:t>
元素。在 Word 文档中键入文本,然后在 Open XML SDK Productivity Tool 中查看 XML,您就会明白我的意思了...
在尝试替换页面上的 body OoXML 时遇到同样的问题,即使是基本示例也是如此。例如将主体 OoXML 设置回自身会引发相同的错误,即使 OoXML 是通过查询 context.document.body.getOoXml()
并在 insertOoXml(value)
上设置 value
给出的值
@Hitmands 感谢您的确认,我以为我疯了。我将调查为此打开 Microsoft 支持案例的可能性 - 但我不抱希望。
@Peak 我与 Microsoft 的支持案例已经升级 - 他们承认了这个问题并将解决它。
大家好。更新是我们正在积极进行 Sev1 升级以解决此问题。完成后我们会通知您。对于给您带来的不便,我们深表歉意。
【参考方案1】:
InsertOoxml 现在似乎又像以前一样工作了。
我尚未从 Microsoft 支持案例中获得有关此修复的确认,但我的所有客户似乎都恢复正常了。
感谢 Juan Balmori 和可扩展性团队的工作人员解决了这个问题。
J.
【讨论】:
以上是关于Word insertOoxml 方法返回错误:所有输入都未知的主要内容,如果未能解决你的问题,请参考以下文章