Как отключить вкладку Дизайн таблиц в Excel с помощью OfficeJS - PullRequest
0 голосов
/ 16 июня 2020

Мы разработали надстройку Excel с использованием office js, и ниже приведен сценарий, поэтому мы просим вас помочь в этом.

Для версии Dekstop

  1. Когда мы нажимаем любую из настраиваемых команд ленты и как только данные связываются в Excel, в Excel открывается новая вкладка «Дизайн таблиц», которая не открывается автоматически.
  2. Пожалуйста, предложите отключить вышеупомянутый сценарий.
    См. Прилагаемый снимок экрана.

enter image description here

For Online version

For online Excel it is not opening automatically new tab "Table Design" which is the required scenario to expect to work in desktop version also.

Sample Code used:

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 {

      }
    });

TRIED BASED ON SUGGESTED ANSWER:

 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");
          }
      });
        
      }
    });

SECOND TIME:

    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");
      }
  });

SAMPLE TRIED ON 06-23-2020 AND ATTACHED SCREEN SHOT FOR THE VALUES

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();
  })
}

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 28 июня 2020

Извините ... я снова не знаю об инструменте Script Lab, и мы специально используем VSCode с машинописным текстом .... так что пример кода, который я недавно обновил, очень базовый c код, который я пытался использовать с помощью метода ExuecteFunction .. если возможно с тем же сценарием для достижения, у нас есть рабочий образец?

0 голосов
/ 18 июня 2020

Я могу воспроизвести это. Стандартным поведением Excel является то, что лента «Дизайн таблиц» открывается при выборе любой части таблицы. Когда вы добавляете данные в таблицу, ваш код также выбирает таблицу, поэтому открывается лента «Дизайн таблиц». Если вы не хотите, чтобы лента «Дизайн таблиц» открывалась, вам нужно добавить команду, которая выбирает что-то за пределами таблицы. Я смог сделать это, добавив следующий вызов setSelectedDataAsync:

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

Замените «Sheet1» именем вашего листа. Это вернет ленту домой.

...