Skip to main content

获取选区内容

场景说明

获取用户当前选中的文档内容,是实现文档交互功能的基础。可以获取选区的文本、样式等信息。

适用场景:

  • 获取用户选中的文本
  • 对选中内容进行处理
  • 实现自定义编辑功能
  • 内容提取和分析

相关 API 文档

示例代码

获取选区文本内容

async function getSelectionText() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区文本
const text = await range.getText();
console.log('选中的文本:', text);

return text;
}

判断选区是否为空

async function isSelectionCollapsed() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 判断是否是闭合范围(即没有选中内容,只有光标)
const isCollapsed = range.isCollapsed;

if (isCollapsed) {
console.log('当前没有选中内容,只有光标');
} else {
console.log('当前有选中内容');
}

return isCollapsed;
}

获取选区中的书签

async function getBookmarksInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区中的所有书签
const bookmarks = range.Bookmarks;
const count = await bookmarks.count;

console.log('选区中的书签数量:', count);
}

获取选区中的可编辑区域

async function getPermMarksInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区中的可编辑区域集合
const permMarks = range.PermMarks;
const count = await permMarks.count;

console.log('选区中的可编辑区域数量:', count);
}

获取选区中的批注

async function getCommentsInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区中的批注集合
const comments = range.Comments;
const count = await comments.count;

console.log('选区中的批注数量:', count);
}

获取选区中的表格

async function getTablesInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区中的表格集合
const tables = range.Tables;
const count = await tables.count;

console.log('选区中的表格数量:', count);
}

获取选区的样式信息

async function getSelectionStyle() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区的加粗状态
const isBold = await range.Bold;
console.log('是否加粗:', isBold);

// 获取选区的斜体状态
const isItalic = await range.Italic;
console.log('是否斜体:', isItalic);

// 获取选区的下划线状态
const underline = await range.Underline;
console.log('下划线类型:', underline);
}

使用 Find 在选区中查找

async function findInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;

// 获取选区的查找对象
const find = range.Find;

// 在选区中查找文本
const count = await find.findData('关键词', false, false);
console.log('在选区中找到的匹配项数量:', count);
}

获取选区的位置信息

async function getSelectionPosition() {
const range = await Application.Selection.range;

// 获取选区末尾所在的页码
const pageNumber = await range.information(Word.WdInformation.wdActiveEndPageNumber);
console.log('选区末尾所在页码:', pageNumber);
}

注意事项

  • 推荐使用 Application.Selection.range 获取当前选区
  • 如果没有选中内容,返回的是光标位置的闭合范围
  • 可以通过 isCollapsed 属性判断是否有选中内容
  • 选区对象是 Range 类型,可以使用 Range 的所有方法和属性
  • 通过选区可以访问其中包含的书签、可编辑区域、批注、表格等元素
  • 选区的样式属性(如 Bold、Italic)表示选区内文本的格式