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);
关键步骤
- 获取表格的 range
- 遍历文档段落,找到表格后的第一个段落
- 使用
buildRange构建包含整个表格的 range - 为新 range 设置可编辑区域