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

還不是我們正在積極研究它 –