Skip to main content

SDK 无法为整个表格添加可编辑区域

问题描述

尝试为整个表格的 range 设置可编辑区域时,结果是把表格中的每个单元格都设置成了独立的可编辑区域。

原因分析

直接对整个表格的 range 设置可编辑区域,会把其中的每个单元格设置为独立的可编辑区域,而不是整个表格作为一个可编辑区域。

解决方案

需要获取表格的后一段落,通过 buildRange 构建出新的 range,为这个新 range 设置保护区域。

示例代码

// 获取应用对象
var Application = await ZOfficeSDK.applications.get('#doc-container1');

// 获取第一个表格
table = await Application.ActiveDocument.Tables.item(1);

// 获取表格的 range
tabRange = await table.range;

// 获取文档段落总数
count = await Application.ActiveDocument.Paragraphs.count;

// 查找表格后的第一个段落
let tabNextPara;
for (let i = 1; i <= count; i++) {
para = await Application.ActiveDocument.Paragraphs.item(i);
range = await para.range;
pos = await tabRange.compare(range);

if (pos === 'before') {
tabNextPara = para;
break;
}
}

// 获取表格后段落的 range
tabNextParaRange = await tabNextPara.range;

// 构建新的 range(从表格开始到表格后段落开始)
newRange = tabRange.buildRange(tabRange.start, tabNextParaRange.start);

// 为新 range 添加可编辑区域
permMark = await Application.ActiveDocument.PermMarks.add('pm1', {"group":["everyone"]}, newRange);

关键步骤

  1. 获取表格的 range
  2. 遍历文档段落,找到表格后的第一个段落
  3. 使用 buildRange 构建包含整个表格的 range
  4. 为新 range 设置可编辑区域

相关文档