ms-word - MS Word 插件 - 从 Excel 中获取粘贴和链接的表格内容
问题描述
编辑: 之前提出的问题有点误导,给人的印象是我的意图是使用 ActiveX 对象而不是链接表。
我正在为MS Word开发一个插件,我需要能够检索从MS Excel复制粘贴的表的数据。表是链接的,以便 Excel 中的每个更改都反映在 Word 中。以下是更好的图片的复制步骤:
- 在 Excel 中选择整个命名表并复制到剪贴板
- 在 Word 中:选择“选择性粘贴”
- 在对话框中:“粘贴链接”为 HTML 格式(也可以是格式化文本 (RTF))
- 现在 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()
以检索我需要的数据的建议。
解决方案
推荐阅读
- amazon-web-services - 如果我将 EC2 实例的角色分配给 S3,这是否意味着所有实例操作系统级别的用户都对 S3 具有相同的访问权限
- spring - 删除弹性搜索响应中 doc_count 为零的存储桶
- javascript - 如何在 phpMyAdmin 的世界地图上显示人口统计数据?
- mongodb - 在 Handlebars 304 错误中嵌套 {{#each}}
- reactjs - 当我单击仪表板中的菜单时,React 路由器显示空白页面
- java - 为什么直接同步一个 ArrayList 可以确保它对其他线程的可见性
- c# - 使用 C# 的类型(反射)是不好的做法吗?
- windows - 使用 PowerShell 创建 Windows 计划任务时停止现有实例选项
- python - 如何在 Python 中模拟一系列用户输入
- mariadb - MariaDB 的默认端口号是多少?