FieldBuilder

FieldBuilder class

Crea un campo a partir de tokens de código de campo (argumentos y modificadores).

Para obtener más información, visite elTrabajar con campos artículo de documentación.

public class FieldBuilder

Constructores

NombreDescripción
FieldBuilder(FieldType)Inicializa una instancia delFieldBuilder clase.

Métodos

NombreDescripción
AddArgument(double)Agrega el argumento de un campo.
AddArgument(FieldArgumentBuilder)Agrega el argumento de un campo representado porFieldArgumentBuilder al código del campo.
AddArgument(FieldBuilder)Agrega un campo secundario representado por otroFieldBuilder al código del campo.
AddArgument(int)Agrega el argumento de un campo.
AddArgument(string)Agrega el argumento de un campo.
AddSwitch(string)Agrega un modificador de campo.
AddSwitch(string, double)Agrega un modificador de campo.
AddSwitch(string, int)Agrega un modificador de campo.
AddSwitch(string, string)Agrega un modificador de campo.
BuildAndInsert(Inline)Crea e inserta un campo en el documento antes del nodo en línea especificado.
BuildAndInsert(Paragraph)Crea e inserta un campo en el documento hasta el final del párrafo especificado.

Ejemplos

Muestra cómo construir campos usando un generador de campos y luego insertarlos en el documento.

Document doc = new Document();

// A continuación se muestran tres ejemplos de construcción de campos realizada utilizando un generador de campos.
// 1 - Campo único:
// Utilice un generador de campos para agregar un campo SÍMBOLO que muestre el símbolo ƒ (Florín).
FieldBuilder builder = new FieldBuilder(FieldType.FieldSymbol);
builder.AddArgument(402);
builder.AddSwitch("\\f", "Arial");
builder.AddSwitch("\\s", 25);
builder.AddSwitch("\\u");
Field field = builder.BuildAndInsert(doc.FirstSection.Body.FirstParagraph);

Assert.AreEqual(" SYMBOL 402 \\f Arial \\s 25 \\u ", field.GetFieldCode());

// 2 - campo anidado:
// Utilice un generador de campos para crear un campo de fórmula utilizado como campo interno por otro generador de campos.
FieldBuilder innerFormulaBuilder = new FieldBuilder(FieldType.FieldFormula);
innerFormulaBuilder.AddArgument(100);
innerFormulaBuilder.AddArgument("+");
innerFormulaBuilder.AddArgument(74);

// Crea otro constructor para otro campo SÍMBOLO e inserta el campo de fórmula
 // que hemos creado arriba en el campo SÍMBOLO como argumento.
builder = new FieldBuilder(FieldType.FieldSymbol);
builder.AddArgument(innerFormulaBuilder);
field = builder.BuildAndInsert(doc.FirstSection.Body.AppendParagraph(string.Empty));

// El campo SÍMBOLO externo utilizará el resultado del campo de fórmula, 174, como argumento,
// lo que hará que el campo muestre el símbolo ® (Signo Registrado) ya que su número de carácter es 174.
Assert.AreEqual(" SYMBOL \u0013 = 100 + 74 \u0014\u0015 ", field.GetFieldCode());

// 3 - Múltiples campos y argumentos anidados:
// Ahora usaremos un constructor para crear un campo IF, que muestra uno de dos valores de cadena personalizados,
// dependiendo del valor verdadero/falso de su expresión. Para obtener un valor verdadero/falso
// que determina qué cadena muestra el campo IF, el campo IF probará la igualdad de dos expresiones numéricas.
// Proporcionaremos las dos expresiones en forma de campos de fórmula, que anidaremos dentro del campo IF.
FieldBuilder leftExpression = new FieldBuilder(FieldType.FieldFormula);
leftExpression.AddArgument(2);
leftExpression.AddArgument("+");
leftExpression.AddArgument(3);

FieldBuilder rightExpression = new FieldBuilder(FieldType.FieldFormula);
rightExpression.AddArgument(2.5);
rightExpression.AddArgument("*");
rightExpression.AddArgument(5.2);

// A continuación, crearemos dos argumentos de campo, que servirán como cadenas de salida de verdadero/falso para el campo IF.
// Estos argumentos reutilizarán los valores de salida de nuestras expresiones numéricas.
FieldArgumentBuilder trueOutput = new FieldArgumentBuilder();
trueOutput.AddText("True, both expressions amount to ");
trueOutput.AddField(leftExpression);

FieldArgumentBuilder falseOutput = new FieldArgumentBuilder();
falseOutput.AddNode(new Run(doc, "False, "));
falseOutput.AddField(leftExpression);
falseOutput.AddNode(new Run(doc, " does not equal "));
falseOutput.AddField(rightExpression);

 // Finalmente, crearemos un generador de campos más para el campo IF y combinaremos todas las expresiones.
builder = new FieldBuilder(FieldType.FieldIf);
builder.AddArgument(leftExpression);
builder.AddArgument("=");
builder.AddArgument(rightExpression);
builder.AddArgument(trueOutput);
builder.AddArgument(falseOutput);
field = builder.BuildAndInsert(doc.FirstSection.Body.AppendParagraph(string.Empty));

Assert.AreEqual(" IF \u0013 = 2 + 3 \u0014\u0015 = \u0013 = 2.5 * 5.2 \u0014\u0015 " +
                "\"True, both expressions amount to \u0013 = 2 + 3 \u0014\u0015\" " +
                "\"False, \u0013 = 2 + 3 \u0014\u0015 does not equal \u0013 = 2.5 * 5.2 \u0014\u0015\" ", field.GetFieldCode());

doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.SYMBOL.docx");

Ver también