首页 > 解决方案 > MS Word 插件 - 从 Excel 中获取粘贴和链接的表格内容

问题描述

编辑 之前提出的问题有点误导,给人的印象是我的意图是使用 ActiveX 对象而不是链接表。

我正在为MS Word开发一个插件,我需要能够检索从MS Excel复制粘贴的表的数据。表是链接的,以便 Excel 中的每个更改都反映在 Word 中。以下是更好的图片的复制步骤:

  1. 在 Excel 中选择整个命名表并复制到剪贴板
  2. 在 Word 中:选择“选择性粘贴”
  3. 在对话框中:“粘贴链接”为 HTML 格式(也可以是格式化文本 (RTF))
  4. 现在 Excel 中的数据更改由于链接而立即反映在 Word 中

我正在努力正确使用 Word API 以编程方式从文档中选择表并检索它们的数据,可能是纯 JSON 和底层 Excel 公式。这就是使用 Excel API 做的更少的事情:

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

  // Get data from the header row  
  var headerRange = expensesTable.getHeaderRowRange().load("values");  

  // Get data from the table  
  var bodyRange = expensesTable.getDataBodyRange().load("values");  

  // Get data from a single column  
  var columnRange = expensesTable.columns  
    .getItem("Merchant")  
    .getDataBodyRange()  
    .load("values");  

  // Get data from a single row  
  var rowRange = expensesTable.rows.getItemAt(1).load("values");  

  // Sync to populate proxy objects with data from Excel  
  return context.sync().then(function() {  
    var headerValues = headerRange.values;  
    var bodyValues = bodyRange.values;  
    var merchantColumnValues = columnRange.values;  
    var secondRowValues = rowRange.values;  

    // Write data from table back to the sheet  
    sheet.getRange("A11:A11").values = [["Results"]];  
    sheet.getRange("A13:D13").values = headerValues;  
    sheet.getRange("A14:D20").values = bodyValues;  
    sheet.getRange("B23:B29").values = merchantColumnValues;  
    sheet.getRange("A32:D32").values = secondRowValues;  

    // Sync to update the sheet in Excel  
    return context.sync();  
  });  
}).catch(errorHandlerFunction);

(取自官方文档

到目前为止我的代码:

 Word.run(context => {
   const table1 = context.document.body.tables.getFirstOrNullObject();
   table1.load(["rows"]);

   const rows = table1.rows;
   rows.load(["items"]);

   return context.sync().then(() => {
     console.log("log", rows);
   });
 });

我需要关于如何正确组合调用<object>.load(<props>)&context.sync()以检索我需要的数据的建议。

标签: ms-wordoffice-jsoffice-addinsword-addins

解决方案


推荐阅读