Angular Web Add в привязке данных Office JS Excel - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь загрузить таблицу, содержащую 160 столбцов, используя угловую, как веб-страницу, добавленную в мою таблицу Excel Spread. Я могу создавать заголовки, но когда я пытаюсь сделать привязку данных, Excel не работает. Я попробовал это с основным примером кода, предоставленным на веб-сайте Microsoft, и это тоже не работает. Я использую Anuglar 8.

  await Excel.run(async context => {

      const r = p.worksheets.getActiveWorksheet();//+ 'FB' + (1 + this.loaddata.length)
      r.name = this.selectedName; //  this is working fine 

      const v = r.tables.add('A1:' + 'FB' + (1 + this.loaddata.length), true);
      v.name = this.selectedName;//  this is working fine 

      v.getHeaderRowRange().values =
        [[A,B,C,.... FB] // row headers are working fine ;


  this.tblBodyData.map(()=> [[this.loaddata[i].k.A..... t 
  this.loaddata[i].FB]]); // tblBodyData: any[] = [];

 // tried this this.tblBodyData.push([[this.loaddata[i].k.A..... 
 // this.loaddata[i].FB]]);


 //I am able to data inside display this.loaddata on a Html table on the web 
   side of the app

 v.rows.add(null,this.tblBodyData);
  // tried this as well v.getDataBodyRange().values = this.tblBodyData;




      v.getRange().format.autofitColumns();
      v.getRange().format.autofitRows();



      r.getUsedRange().getEntireColumn().format.autofitColumns();
      r.getUsedRange().getEntireRow().format.autofitRows();

       r.getUsedRange().format.autofitColumns();
       r.getUsedRange().format.autofitRows();

       if (Office.context.requirements.isSetSupported("ExcelApi", "1.5")) {
        r.getUsedRange().format.autofitColumns();
        r.getUsedRange().format.autofitRows();
      }
      r.activate();
      // }
      // return context.sync();
    }

    //  return context.sync();

    await context.sync();
  }
);

}

Я также попробовал это

  const k = context.workbook;
  const y = k.worksheets.add('Welcome');
     //this works fine
  const expensesTable = y.tables.add('A1:D1', true /*hasHeaders*/ );

  expensesTable.name = 'ExpensesTable';
   //this works fine

  expensesTable.getHeaderRowRange().values = [
     ['Date', 'Merchant', 'Category', 'Amount']
    ];
  //this works fine

  expensesTable.rows.add(null /*add at the end*/ , [
  ['1/1/2017', 'The Phone Company', 'Communications', '120'],
  ['1/2/2017', 'Northwind Electric Cars', 'Transportation', '142.33'],
  ['1/5/2017', 'Best For You Organics Company', 'Groceries', '27.9'],
  ['1/10/2017', 'Coho Vineyard', 'Restaurant', '33'],
  ['1/11/2017', 'Bellows College', 'Education', '350.1'],
  ['1/15/2017', 'Trey Research', 'Other', '135'],
  ['1/15/2017', 'Best For You Organics Company', 'Groceries', '97.88']
  ]); // this part doesnt work


  y.getUsedRange().getEntireColumn().format.autofitColumns();
  y.getUsedRange().getEntireRow().format.autofitRows();
  await context.sync();
  });

Я попытался подключить отладчик из моей Visual Studio 2019 к Edge, Explorer,Excel, но он не достигает точки останова, которую я установил в своем VScode. Любые идеи о том, как это настроить. Я могу достичь нескольких точек останова, когда открываю свой localhost: 3000 в инструментах Chrome Dev, но я получаю 404 от Telemetryproxy, и он не попадает в мой компонент. Я тоже попробовал это https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-tables#import-json-data-into-a-table.

   Excel.run(function (context) {
   var sheet = context.workbook.worksheets.getItem("Sample");

   var expensesTable = sheet.tables.add("A1:D1", true /*hasHeaders*/);
   expensesTable.name = "ExpensesTable";
   expensesTable.getHeaderRowRange().values = [["Date", "Merchant", 
  "Category", "Amount"]];

   var transactions = [
   {
    "DATE": "1/1/2017",
    "MERCHANT": "The Phone Company",
    "CATEGORY": "Communications",
    "AMOUNT": "$120"
   },
   {
    "DATE": "1/1/2017",
    "MERCHANT": "Southridge Video",
    "CATEGORY": "Entertainment",
    "AMOUNT": "$40"
   }
   ];

   var newData = transactions.map(item =>
    [item.DATE, item.MERCHANT, item.CATEGORY, item.AMOUNT]);

   expensesTable.rows.add(null, newData);

   if (Office.context.requirements.isSetSupported("ExcelApi", "1.2")) {
    sheet.getUsedRange().format.autofitColumns();
    sheet.getUsedRange().format.autofitRows();
   }

   sheet.activate();

   return context.sync();
   }).catch(errorHandlerFunction);

Проведя некоторые исследования, я обнаружил, что вы можете отлаживать только с помощью Visual Studio 2015, я могу подключить свою Visual Studio к Iexplorer - Script / Task. Я не могу достичь точек останова, ноя вижу сгенерированный код Js. Теперь я вижу эту ошибку: «Таблица не может перекрывать диапазон, который содержит отчет сводной таблицы, результаты запроса, защищенные ячейки или другую таблицу». Когда я пытаюсь добавить новые значения в таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...