Class FieldMergeField

FieldMergeField class

实现 MERGEFIELD 字段。

public class FieldMergeField : Field

特性

姓名描述
DisplayResult { get; }获取表示显示字段结果的文本。
End { get; }获取代表字段end的节点。
FieldName { get; set; }获取或设置数据字段的名称。
FieldNameNoPrefix { get; }仅返回数据字段的名称。任何前缀都被剥离到前缀属性.
Format { get; }得到一个FieldFormat提供对字段格式的类型化访问的对象。
IsDirty { get; set; }获取或设置字段的当前结果是否由于对文档的其他修改而不再正确(陈旧)。
IsLocked { get; set; }获取或设置字段是否被锁定(不应重新计算其结果)。
IsMapped { get; set; }获取或设置此字段是否为映射字段。
IsVerticalFormatting { get; set; }获取或设置是否启用垂直格式的字符转换。
LocaleId { get; set; }获取或设置字段的LCID。
Result { get; set; }获取或设置字段分隔符和字段结尾之间的文本。
Separator { get; }获取表示字段分隔符的节点。可以为空。
Start { get; }获取表示字段开始的节点。
TextAfter { get; set; }获取或设置字段不为空时要插入的文本。
TextBefore { get; set; }获取或设置字段不为空时要在字段前插入的文本。
override Type { get; }获取 Microsoft Word 字段类型。

方法

姓名描述
GetFieldCode()返回字段开始和字段分隔符之间的文本(或字段结束,如果没有分隔符)。 包括子字段的字段代码和字段结果。
GetFieldCode(bool)返回字段开始和字段分隔符之间的文本(如果没有分隔符,则返回字段结束)。
Remove()从文档中删除字段。在字段之后返回一个节点。如果字段的结尾是其父节点的最后一个 child ,则返回其父段落。如果该字段已被删除,则返回 无效的.
Unlink()执行字段取消链接。
Update()执行字段更新。如果该字段已被更新,则抛出。
Update(bool)执行字段更新。如果该字段已被更新,则抛出。

评论

检索邮件合并主文档中合并字符内的数据字段的名称。 当主文档与所选数据源合并时,将插入指定的 数据字段中的信息来代替合并字段。

例子

展示如何使用 MERGEFIELD 字段来执行邮件合并。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 创建一个数据表,用作邮件合并数据源。
DataTable table = new DataTable("Employees");
table.Columns.Add("Courtesy Title");
table.Columns.Add("First Name");
table.Columns.Add("Last Name");
table.Rows.Add("Mr.", "John", "Doe");
table.Rows.Add("Mrs.", "Jane", "Cardholder");

// 插入一个 MERGEFIELD,其 FieldName 属性设置为数据源中列的名称。
FieldMergeField fieldMergeField = (FieldMergeField)builder.InsertField(FieldType.FieldMergeField, true);
fieldMergeField.FieldName = "Courtesy Title";
fieldMergeField.IsMapped = true;
fieldMergeField.IsVerticalFormatting = false;

// 我们可以在合并发生时该字段接受的值之前和之后应用文本。
fieldMergeField.TextBefore = "Dear ";
fieldMergeField.TextAfter = " ";

Assert.AreEqual(" MERGEFIELD  \"Courtesy Title\" \\m \\b \"Dear \" \\f \" \"", fieldMergeField.GetFieldCode());

// 为数据源中的不同列插入另一个 MERGEFIELD。
fieldMergeField = (FieldMergeField)builder.InsertField(FieldType.FieldMergeField, true);
fieldMergeField.FieldName = "Last Name";
fieldMergeField.TextAfter = ":";

doc.UpdateFields();
doc.MailMerge.Execute(table);

Assert.AreEqual("Dear Mr. Doe:\u000cDear Mrs. Cardholder:", doc.GetText().Trim());

也可以看看