以编程方式在 Word 文档中插入文本
向 Microsoft Office Word 文档中插入文本主要有三种方式:
适用于: 本主题中的信息适用于 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。
注意
有兴趣开发跨多个平台扩展办公室体验的解决方案? 查看新的办公室外接程序模型。 与 VSTO 外接程序和解决方案相比,办公室外接程序的占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。
在区域中插入文本
若要在范围中插入文本
在文档开头指定一个范围,并插入文本 New Text。
下面的代码示例可用于文档级自定义项。
object start = 0; object end = 0; Word.Range rng = this.Range(ref start, ref end); rng.Text = "New Text";
以下代码示例可用于 VSTO 外接程序。 此代码运用了活动文档。
选择 Range 对象,该对象已从一个字符长度扩展到了插入文本的长度。
替换区域中的文本
如果指定的范围包含文本,则该范围中的所有文本将被插入的文本替换。
若要替换范围中的文本
创建一个 Range 对象,该对象包含文档中的前 12 个字符。
下面的代码示例可用于文档级自定义项。
以下代码示例可用于 VSTO 外接程序。 此代码运用了活动文档。
将这些字符替换为字符串 New Text。
选择范围。
使用 TypeText 插入文本
TypeText 方法可在所选位置处插入文本。 TypeText 的行为有所不同,具体取决于用户计算机上设置的选项。 以下过程中的代码声明了一个 Selection 对象变量,如果 Overtype 选项已打开,则会将其关闭。 如果 Overtype 选项已激活,则关闭旁的任何文本将被覆盖。
若要使用 TypeText 方法插入文本
声明一个 Selection 对象变量。
如果 Overtype 选项已打开,请将其关闭。
测试当前选择项是否未插入点。
如果是,此代码将使用 TypeText插入一个句子,然后使用 TypeParagraph 方法插入段落标记。
ElseIf 块中的代码用于测试选择项是否为正常选择项。 如果是,则另一个 If 块将测试 ReplaceSelection 选项是否已打开。 如果是,该代码将使用选择项的 Collapse 方法将选择项折叠为文本所选块起始处的插入点。 插入文本和段落标记。
else if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal) { // Move to start of selection. if (Application.Options.ReplaceSelection) { object direction = Word.WdCollapseDirection.wdCollapseStart; currentSelection.Collapse(ref direction); } currentSelection.TypeText("Inserting before a text block. "); currentSelection.TypeParagraph(); }
如果选择项不是所选文本的插入点或块,则 Else 块中的代码将不会执行任何操作。
还可以使用TypeBackspace对象的方法Selection,该方法模拟键盘上的 Backspace 键的功能。 但是,当涉及到插入和操作文本时,Range 对象将提供更多控件。
以下示例显示了完整的代码。 若要使用此示例,请运行项目中的
ThisDocument
或ThisAddIn
类的代码。private void SelectionInsertText() { Word.Selection currentSelection = Application.Selection; // Store the user's current Overtype selection bool userOvertype = Application.Options.Overtype; // Make sure Overtype is turned off. if (Application.Options.Overtype) { Application.Options.Overtype = false; } // Test to see if selection is an insertion point. if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) { currentSelection.TypeText("Inserting at insertion point. "); currentSelection.TypeParagraph(); } else if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal) { // Move to start of selection. if (Application.Options.ReplaceSelection) { object direction = Word.WdCollapseDirection.wdCollapseStart; currentSelection.Collapse(ref direction); } currentSelection.TypeText("Inserting before a text block. "); currentSelection.TypeParagraph(); } else { // Do nothing. } // Restore the user's Overtype selection Application.Options.Overtype = userOvertype; }