我正在使用此代码使用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
吗?
答案 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.
希望有所帮助:)