覆盖字段内容

时间:2016-12-20 15:33:50

标签: c# office-interop

我正在使用此代码使用Word Interop将内容放入Field

var wordApp = new Microsoft.Office.Interop.Word.Application();
var wordDoc = wordApp.Documents.Add(Path.GetFullPath("myTemplate.dotx"));
Field f = wordDoc.Fields[0];
f.Select();
wordApp.Selection.TypeText("some text");

但这仅适用一次。如果我再次运行f.Select()语句,我会得到COMException告诉我对象已经消失。

有没有办法覆盖字段内容?或者我必须只能写一次Field吗?

1 个答案:

答案 0 :(得分:2)

当您选择字段,然后使用TypeText时,会用输入文本替换整个字段。相反,您应该使用Field.Result属性:

f.Result.Text = "some text";

因此,您的代码应如下所示:

var wordApp = new Microsoft.Office.Interop.Word.Application();
var wordDoc = wordApp.Documents.Add(Path.GetFullPath("myTemplate.dotx"));
wordDoc.Fields[1].Result.Text = "some text"; // AFAIK, `Fields` collection is one-based.

// Do whatever other modifications you want, then save and close the document.

希望有所帮助:)