FieldMergeField

FieldMergeField class

实现 MERGEFIELD 字段。

要了解更多信息,请访问使用字段文档文章。

public class FieldMergeField : Field

特性

姓名描述
DisplayResult { get; }获取表示显示字段结果的文本。
End { get; }获取代表字段结束的节点。
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());
Assert.AreEqual(FieldType.FieldMergeField, fieldMergeField.Type);

// 在数据源中为不同的列插入另一个 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());

也可以看看