1

我开发了一个非常简单的taskPane外接程序,我想在Excel Online中进行测试。我使用了Visual Studio 2015和Javascript Api for Office,并开始了一个新项目Office/Sharepoint - >然后我选择了任务窗格选项。 我改变他们打造的样品的唯一事情是在Home.js:Office API的JavaScript API getFileAsync函数不调用回调

/// <reference path="../App.js" /> 
 

 
(function() { 
 
    "use strict"; 
 

 
    // The initialize function must be run each time a new page is loaded 
 
    Office.initialize = function (reason) { 
 
     $(document).ready(function() { 
 
      app.initialize(); 
 

 
      $('#get-crazy').click(getCrazy); 
 
     }); 
 
    }; 
 

 
    // Reads data from current document selection and displays a notification 
 
    function getCrazy(){ 
 
     Office.context.document.getFileAsync(Office.FileType.Compressed, {sliceSize: 2097152}, 
 
      function (result) { 
 
       if (result.status === Office.AsyncResultStatus.Succeeded) { 
 
        console.log("I'm here :D "); 
 
       } else { 
 
        app.showNotification('Error:', result.error.message); 
 
       } 
 
      } 
 
     ); 
 
    } 
 
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="UTF-8" /> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
 
    <title></title> 
 
    <script src="../../Scripts/jquery-1.9.1.js" type="text/javascript"></script> 
 

 
    <link href="../../Content/Office.css" rel="stylesheet" type="text/css" /> 
 
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script> 
 

 
    <!-- To enable offline debugging using a local reference to Office.js, use:      --> 
 
    <!-- <script src="../../Scripts/Office/MicrosoftAjax.js" type="text/javascript"></script> --> 
 
    <!-- <script src="../../Scripts/Office/1.1/office.js" type="text/javascript"></script> --> 
 

 
    <link href="../App.css" rel="stylesheet" type="text/css" /> 
 
    <script src="../App.js" type="text/javascript"></script> 
 

 
    <link href="Home.css" rel="stylesheet" type="text/css" /> 
 
    <script src="Home.js" type="text/javascript"></script> 
 
</head> 
 
<body> 
 
    <div id="content-header"> 
 
     <div class="padding"> 
 
      <h1>Welcome</h1> 
 
     </div> 
 
    </div> 
 
    <div id="content-main"> 
 
     <div class="padding"> 
 
      <button id="get-crazy"> SURPRISE! </button> 
 
     </div> 
 
    </div> 
 
</body> 
 
</html>

我也改变了清单,以便其startAction指出了InternetExplorer的和我使用的是sharePoint开发人员网站打开此Excel Online。 当我运行代码,我得到这个消息:

XML5619: Incorrect document syntax. 
Line: 1, Column 1 
SEC7111: HTTPS security is compromised by res://ieframe.dll/http_500.htm 
SEC7111: HTTPS security is compromised by res://ieframe.dll/ErrorPageTemplate.css 
SEC7111: HTTPS security is compromised by res://ieframe.dll/errorPageStrings.js 
SEC7111: HTTPS security is compromised by res://ieframe.dll/httpErrorPagesScripts.js 
SEC7111: HTTPS security is compromised by res://ieframe.dll/info_48.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/bullet.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/bullet.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/down.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/down.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/background_gradient.jpg 

当我按下按钮我只有这个:Agave.HostCall.IssueCall。而且我知道它在'getFileAsync'函数中'卡住'了。你能帮我吗?

回答

0

您是否尝试过使用Excel的本地副本,而不是在线Excel,只是为了查看这是否是问题?

+1

那么,这个功能不支持朝向Excel桌面,我试过它使用Word的本地副本,它的工作原理很好 –

0

您应该使用office.js版本1.1,因为getFileAsync()刚刚被1.1支持,所以您应该用“https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js”替换“https://appsforoffice.microsoft.com/lib/1/hosted/office.js”。

+0

Thanks @shanbo。我已经试过这样做,但没有奏效。 –

+0

当然@shanbo!这里你去https://github.com/PastelBelem8/Office365AddIn.git –

+0

代码似乎没问题,除了第一行“ ”,这行应该被删除,另一个问题是你应该调用closeAsync()来释放getFileAsync调用结果,详情请参考msdn。但是这个问题似乎不是由它引起的,你是否介意在Github上发布你的整个VS项目并将URL分享给我?所以我可以在我的本地机器上进行调试。顺便说一句,我粘贴你的home.html和home.js代码并在龙舌兰测试它,一切正常。 – shanbo