【问题标题】:How to disable Table Design tab in Excel using OfficeJS如何使用 OfficeJS 在 Excel 中禁用表格设计选项卡
【发布时间】:2020-06-16 15:31:37
【问题描述】:

我们使用 officejs 开发了 Excel 插件,以下是场景,因此请您提供帮助。

Dekstop 版本

  1. 当我们单击任何自定义功能区命令并且一旦数据绑定到 Excel 中,就会在 Excel 中打开不想自动打开的新选项卡“表格设计”。
  2. 请建议禁用上述方案。
    请查找随附的屏幕截图。

在线版

对于在线 Excel,它不会自动打开新标签“表格设计”,这也是在桌面版本中工作所需的场景。

使用的示例代码:

var dtTable = new Office.TableData();
    dtTable.headers = ['Id', 'Name', 'DOB', 'year'];
    for (var i = 0; i < data.length; i++) {
      dtTable.rows.push([data[i].ID, data[i].Name, data[i].DOB, data[i].year]);
    }

    Office.context.document.setSelectedDataAsync(dtTable, { coercionType: Office.CoercionType.Table }, function (asyncResult) {
      if (asyncResult.status == Office.AsyncResultStatus.Failed) {
      } else {

      }
    });

根据建议的答案进行了尝试:

 Office.context.document.setSelectedDataAsync(dtTable, { coercionType: Office.CoercionType.Table }, function (asyncResult) {
      if (asyncResult.status == Office.AsyncResultStatus.Failed) {
      } else {
        Office.context.document.goToByIdAsync("Sheet1", Office.GoToType.NamedItem, function (asyncResult) {
          if (asyncResult.status ==  Office.AsyncResultStatus.Failed) {
              // showMessage("Action failed with error: " + asyncResult.error.message);
          }
          else {
              // showMessage("Navigation successful");
          }
      });
        
      }
    });

第二次:

    Office.context.document.setSelectedDataAsync(dtTable, { coercionType: Office.CoercionType.Table }, function (asyncResult) {
      if (asyncResult.status == Office.AsyncResultStatus.Failed) {
      } else {
               
      }
    });            
    Office.context.document.goToByIdAsync("Sheet1", Office.GoToType.NamedItem, function (asyncResult) {
      if (asyncResult.status == Office.AsyncResultStatus.Failed) {
          // showMessage("Action failed with error: " + asyncResult.error.message);
      }
      else {
          // showMessage("Navigation successful");
      }
  });

样品于 2020 年 6 月 23 日试用,并附上数值的屏幕截图

async function getData(event: any) {
  await BindExcel();
  event.completed();
}


async function BindExcel() {    //testing for Table Desing tab
    Excel.run(async context => { 
    var table = new Office.TableData();
    table.headers = [['Header', 'Header2']];
    table.rows = [['Entry11', 'Entry12'], ['Entry21', 'Entry22'], ['Entry31', 'Entry33']];
    Office.context.document.setSelectedDataAsync(table, {coercionType: Office.CoercionType.Table},
        function (asyncResult) {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                console.log(asyncResult.error.message);
            }
        });
        Office.context.document.goToByIdAsync("Sheet1", Office.GoToType.NamedItem); 
    return context.sync();
  })
}

【问题讨论】:

  • 请补充一些细节。这些自定义功能区命令是您的加载项的一部分吗?他们是否将数据导入电子表格?他们会将数据导入表格吗?
  • @rick.. 是的,它是自定义功能功能区命令的一部分......
  • @rick.. 任何更新请...
  • 我不知道您所说的“自定义功能功能区命令”是什么意思。自定义功能不是从功能区命令启动的。功能区命令是否将数据导入电子表格?他们是否将数据导入表格? ——
  • @rick .. 抱歉拼写错误...试图确认这些是在 excel 中实现的自定义功能区命令的一部分...。当我单击任何一个自定义功能区命令时,一旦导入数据进入电子表格,然后“表格设计”出现在之前的屏幕截图中......

标签: office-js


【解决方案1】:

我可以重现这个。选择表格的任何部分时,表格设计功能区打开是 Excel 中的标准行为。当您向表格添加数据时,您的代码也会选择表格,因此表格设计功能区将打开。如果您不想打开“表格设计”功能区,则需要添加一个命令来选择表格之外的内容。我可以通过添加setSelectedDataAsync 的以下调用来做到这一点:

Office.context.document.goToByIdAsync("Sheet1", Office.GoToType.NamedItem); 

将“Sheet1”替换为您的工作表名称。这将切换回主页功能区。

【讨论】:

  • 嗨瑞克..感谢您的解决方案..我尝试了我在最初请求中提到的相同。但是仍然出现了新的表格设计选项卡...因此请确认我尝试过的任何更正...
  • 找到“;” (分号)结束setSelectedDataAsync 的调用。将goToByIDAsync 的调用移动到“;”之后的一行
  • 嗨 Rick... 第二次我尝试了,但仍然出现带有该代码的表格设计选项卡。
  • 对不起。但我无法重现这一点。它对我有用。
  • 嗨 Rick...我附上了最终示例代码,我可以将 api 数据绑定到 Excel 工作表中,新的表格设计选项卡仍在打开...您有任何示例代码,例如在不打开 Table Design 选项卡的情况下使用 Api 绑定表数据的场景,这样我就可以参考整个代码结构并尝试找到我遗漏的地方..
【解决方案2】:

对不起..我再次不了解 Script Lab 工具,我们专门使用带有 typescript 的 VSCode....所以我最近更新的示例代码是我尝试使用 ExuecteFunction 方法的非常基本的代码..如果可能的话我们有工作样本吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多