【问题标题】:Uncaught Reference Error: Excel is not defined未捕获的引用错误:未定义 Excel
【发布时间】:2018-09-13 06:28:06
【问题描述】:

我正在使用“Office 插件的 JavaScript API”在我的 HTML 程序中创建 excel 文件。

但是,当我加载页面时,这会返回一条错误消息。

<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
   <script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>

  <script>
    Excel.run(function (context) {     
      console.log('Your code goes here.');
    }).catch(function (error) {
      console.log('error: ' + error);
   });
  </script>
<head>

这会返回错误消息“未捕获的引用错误:Excel 未定义”。

【问题讨论】:

  • 我不确定如何使用这个 API。但是,我在这些文档中看到您需要等待 Office 被初始化。有这个Office.onReady 函数,在这个函数的回调中我认为你可以执行相关的任务。这里:github.com/OfficeDev/office-js-docs-pr/blob/master/docs/develop/…
  • 我还可以在控制台Warning: Office.js is loaded outside of Office client 中看到警告,我认为您需要将其加载到办公室客户端中。你需要更多地挖掘你想要通过这个实现的目标。

标签: javascript excel ms-office office-js referenceerror


【解决方案1】:

Sivcan 的评论是正确的。当加载项加载时,API 功能不会立即可用(通常甚至没有在 JS 变量中定义),您需要等到调用 Office.onReady(或其较旧的等效项 Office.initialize)。

在你的情况下,这应该有效:

<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js></script>
   <script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>

   <script>
       Office.onReady(() => {
           Excel.run(function (context) {     
               console.log('Your code goes here.');
           }).catch(function (error) {
               console.log('error: ' + error);
           });
       });
   </script>
</head>
<body>
</body>

【讨论】:

  • 仍然,我得到了同样的错误。请查看jsbin
  • 对。此代码只能在 Excel 加载项内部工作,而不仅仅是在常规浏览器中。
  • 如果您想要类似 JSBin 的工具,但要使用 Office 插件,请尝试 aka.ms/script-lab
猜你喜欢
  • 2013-10-27
  • 2011-09-25
  • 2021-11-01
  • 2017-11-22
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多