3

我已经开发了一个词加载项,使用javascript javascript api。我的文档.docx文件位于服务器上,我需要将该.docx文档作为一个新的Word文档打开,然后单击加载项。如何在word加载项中打开新的Word docx文档

请指导我如何在word加载项中打开新文档。

谢谢。

回答

-1

基于JavaScript的Office.js API不支持在新实例中打开文档(即新的单独的Word窗口),至少暂时不受支持。您始终从Context对象开始,该对象将允许您通过Context.document属性访问当前活动的文档。

您可以做的是将内容插入到现有的文档中,例如,通过body.insertOoxml方法。

目前,与传统的COM API相比,Office.js API仍然有限。如果您需要完整的功能集,您现在仍可以考虑开发COM或VSTO解决方案。唯一的缺点是您的加载项不能在Windows桌面以外的任何平台上运行。

+0

这是现在支持,请参考我的答案...谢谢! –

+0

@JuanBalmori:这是个好消息!但如果我正确理解你的答案,这仍然在测试中。有没有关于测试版功能的文档?或者其他任何方式来跟进将要添加的功能? –

+0

是预览!请试一试!向我发送反馈!我们有一个开放的规格,我们放弃我们计划发货的一切!检查出来https://github.com/OfficeDev/office-js-docs/tree/WordJs_1.3_Openspec/word这里更多关于要求的信息https://github.com/OfficeDev/office-js-docs/树/ WordJs_1.3_Openspec –

4

我们正在向API中添加新的方法,您可以实际使用它来实现此目的。注意,这是预览,这意味着将在几个月内投入生产。您需要最新的Office版本,并参考我们的预览office.js来试用它。 office.js预览在这里https://appsforoffice.microsoft.com/lib/beta/hosted/office.js

看看这个代码示例是多么容易做到这一点。

function onaddOpenDoc() { 
 
     Word.run(function (context) { 
 
      
 
      // this getDocumentAsBase64 assumes a valid base64-encoded docx file 
 
      var myNewDoc = context.application.createDocument(getDocumentAsBase64()); 
 
      context.load(myNewDoc); 
 

 
      return context.sync() 
 
       .then(function() { 
 
        myNewDoc.open(); 
 
        context.sync(); 
 
       }).catch(function (myError) { 
 
        //otherwise we handle the exception here! 
 
        showNotification("Error", myError.message); 
 
       }) 
 

 
     }).catch(function (myError) { showNotification("Error", myError.message); }); 
 

 

 
    }

+0

谢谢,它正在按预期工作,等待生产。 – user3931619

+0

它还没有生产?官方文档https://dev.office.com/reference/add-ins/shared/context中没有“应用程序”属性。顺便说一句。我使用angular 4,并且在Word Namespace的类型中的RequestContext-Class上没有应用程序属性。 – JohnnyAW

+0

还不是我们正在积极研究它 –