【发布时间】:2020-04-17 13:38:11
【问题描述】:
在 Excel Javascript API 中,我看到了 range 类中用于合并和取消合并单元格的方法,但没有看到指示单元格是否已合并以及它包含多少行和列的属性。如果没有明确的 API 来阅读此内容,是否有人知道解决方法 - 例如。间接检测合并状态或获取范围的底层 xml 并对其进行解析?
【问题讨论】:
标签: javascript excel office-js
在 Excel Javascript API 中,我看到了 range 类中用于合并和取消合并单元格的方法,但没有看到指示单元格是否已合并以及它包含多少行和列的属性。如果没有明确的 API 来阅读此内容,是否有人知道解决方法 - 例如。间接检测合并状态或获取范围的底层 xml 并对其进行解析?
【问题讨论】:
标签: javascript excel office-js
很抱歉,目前我们没有 API(在 VBA 中,对应的 API 是 Range.MergeCells)来检查合并单元格的状态。如果您在合并之前知道原始范围地址,您可以尝试 Ginger Jiang(来自我们团队)的解决方法。
如果您的场景仍然无法解锁,我建议您在 UserVoice https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=163563 上提交您的请求并对此功能进行投票,我们会将其添加到我们的待办事项中。
PS。如果您能与我们分享您的场景,那就太好了。因此,我们可以看到如何使用现有 API 解除对您的场景的阻塞。
谢谢
【讨论】:
这里是选择一个范围并合并范围的示例工作,然后检查它是否是合并范围:
//get selected range and did merge
var range = context.workbook.getSelectedRange();
range.merge();
await context.sync();
// check whether the range is merged or not
range.load();
await context.sync();
console.log(range["cellCount"]);
const str = range.address;
const colCount = range.columnCount;
const rowCount = range.rowCount;
console.log(colCount);
console.log(rowCount);
if (str) {
const arr = str.split("!");
console.log(arr[1]);
if ((range["cellCount"] > 1 || range["colCount"] > 1 || range["rowCount"] > 1) && arr[1].indexOf(":") == -1) {
console.log("true");
} else {
console.log("false");
}
}
【讨论】: