Introducción a los campos

Aspose.Words es una biblioteca de clase diseñada para el procesamiento del lado servidor Microsoft Word documentos y soporte campos de la siguiente manera:

  • todos los campos de un documento se conservan durante la apertura/salida y conversiones
  • es posible actualizar los resultados de la mayoría de los campos

En este artículo aprenderemos más sobre la estructura de campo, los campos apoyados en Aspose.Words, y detalles de trabajar con tales campos.

Estructura de campo

Un campo consiste en:

  • Los nodos de inicio de campo y separador se utilizan para abarcar el contenido que compone el código de campo (normalmente como texto plano).
  • El separador de campo y el extremo de campo abarcan el resultado de campo. Esto se puede componer de varios tipos de contenidos que van desde las series de texto a párrafos a tablas.
  • Algunos campos pueden no tener un separador que significa que todo el contenido compone el código de campo.
  • El código de campo define el comportamiento del campo y está compuesto por el identificador de campo y a menudo otros parámetros como el nombre de campo y los interruptores.
  • El resultado sobre el terreno contiene la evaluación más reciente del terreno. Este valor se almacena en el resultado del campo y es lo que se muestra al usuario. Algunos campos pueden no tener ningún resultado de campo por lo tanto no mostrará nada en el documento. Del mismo modo, algunos campos pueden no ser actualizados, por lo que tampoco tendrán ningún resultado de campo.

fields-aspose-words-java

El contenido que compone el código de campo se almacena como Run nodos entre los FieldStart y FieldSeparator. El resultado del campo se almacena entre el FieldSeparator y FieldEnd nodos y se pueden componer de varios tipos de contenidos. Normalmente el resultado del campo contiene sólo texto compuesto de los nodos Run, sin embargo es posible que el nodo FieldEnd esté situado en un párrafo completamente diferente, y por lo tanto hacer el resultado del campo compuesto de Niveles lógicos de los ganglios en un documento tales como Table y Paragraph nodos también.

Aquí está la vista de cómo se almacena un campo Aspose.Words utilizando el ejemplo “DocumentExplorer” que se puede encontrar Github.

document-explorer-aspose-words-java

Campos en Aspose.Words Document Object Model (G)DOM)

Cuando un documento se carga en <span notrans="<span notrans=" Aspose.Words"="">," los campos del documento se cargan en Aspose.Words Document Object Model como un conjunto de componentes separados (nodos). Un solo campo se carga como una colección de FieldStart, FieldSeparator y FieldEnd nodos junto con el contenido entre estos nodos. Si un campo no tiene un resultado de campo entonces no habrá FieldSeparator Nodo. Todos estos nodos siempre se encuentran inline (como hijos de Paragraph o SmartTag.

In Aspose.Words cada uno de los FieldXXX nodos deriva de FieldChar. Esta clase proporciona una propiedad para comprobar el tipo de campo representado por el nodo especificado a través del FieldType propiedad. Por ejemplo FieldType.FieldMergeField representa un campo de fusión en el documento.

Campos de apoyo

Cálculo de los siguientes campos es compatible en la versión actual de Aspose.Words:

  • = (formula)
  • ADDRESSBLOCK
  • ASK
  • AUTHOR
  • AUTONUM
  • AUTONUMLGL
  • AUTONUMOUT
  • AUTOTEXT
  • BARCODE
  • COMMENTS
  • COMPARE
  • CREATEDATE
  • DATABASE
  • DATE
  • DISPLAYBARCODE
  • DOCPROPERTY
  • DOCVARIABLE
  • EDITTIME
  • EQ
  • FILENAME
  • FILESIZE
  • FILLIN
  • FORMCHECKBOX
  • FORMDROPDOWN
  • FORMTEXT
  • GLOSSARY
  • GOTOBUTTON
  • GREETINGLINE
  • HYPERLINK
  • IF
  • IMPORT
  • INCLUDE
  • INCLUDEPICTURE
  • INCLUDETEXT
  • INDEX
  • INFO
  • KEYWORDS
  • LASTSAVEDBY
  • LISTNUM
  • MACROBUTTON
  • MERGEBARCODE
  • MERGEFIELD
  • MERGEREC
  • MERGESEQ
  • NEXT
  • NEXTIF
  • NOTEREF
  • NUMCHARS
  • NUMPAGES
  • NUMWORDS
  • PAGE
  • PAGEREF
  • PRINTDATE
  • QUOTE
  • REF
  • REVNUM
  • SAVEDATE
  • SECTION
  • SECTIONPAGES
  • SEQ
  • SET
  • SHAPE
  • SKIPIF
  • STYLEREF
  • SUBJECT
  • SYMBOL
  • TEMPLATE
  • TIME
  • TITLE
  • TOA
  • TOC (incluyendo TOT y TOF)
  • USERADDRESS
  • USERINITIALS
  • USERNAME

Pase de campo sofisticado

Aspose.Words sigue el camino Microsoft Word procesos campos y como resultado maneja correctamente:

  • campos anidados: IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
  • el argumento de campo puede ser el resultado de un campo anidado
  • los campos pueden ser anidados dentro de un código de campo, así como en el resultado del campo
  • espacios/no espacios, citas/no citas, personajes de escape en campos, etc.: MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
  • campos que abarcan varios párrafos

Fórmula Fields

Aspose.Words proporciona una aplicación muy seria del motor de fórmula y apoya lo siguiente:

  • operadores aritméticos y lógicos: =(54+4*(6-77)-(5))+(-6-5)/4/5
  • funciones: =ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
  • referencias a marcadores: =IF(C>4, 5,ABS(A)*.76) +3.85
  • conmutadores de formato número: =00000000 \\\# "$#,##0.00;($#,##0.00)"

Se apoyan las siguientes funciones en las expresiones: ABS, AND, AVERAGE, COUNT, DEFINED, FALSE, IF, INT, MAX, MIN, MOD, NOT, OR, PRODUCT, ROUND, SIGN, SUM, TRUE.

IF y COMPARE Campos

Sólo algunos de los IF expresiones que Aspose.Words puede calcular fácilmente debe darle una idea de lo poderoso que es esta característica:

  • IF 3 > 5.7^4+MAX(4,3) True False
  • IF "abcd" > "abc" True False
  • IF "?ab*" = "1abdsg" True False
  • IF 4 = "2*2" True False
  • COMPARE 3+5/34 < 4.6/3/2

DATE y TIME Campos

Aspose.Words soporta todos los conmutadores de formato de fecha y hora disponibles en Microsoft Word, algunos ejemplos son:

  • DATE @ "d-MMM-yy"
  • DATE @ "d/MM/yyyy h:mm am/pm

Mail Merge Campos

Aspose.Words no impone límite a la complejidad mail merge campos en sus documentos y soportes anidados IF y campos de fórmula e incluso puede calcular el nombre del campo de fusión usando una fórmula.

Algunos ejemplos de mail merge campos que Aspose.Words soportes:

  • Mail merge interruptores de campo: MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
  • campos de fusión anidados en una fórmula: IF { MERGEFIELDValue1 } >= {MERGEFIELD Value2 } True False
  • calcular el nombre del campo de fusión en tiempo de ejecución: MERGEFIELD { IF{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • movimiento condicional al siguiente registro en la fuente de datos: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 2, -.45) }

Switches de formato

Un campo en un documento puede tener interruptores de formato que especifican cómo debe formatear el valor resultante. Aspose.Words soporta los siguientes conmutadores de formato:

  • @ - formato de fecha y hora
  • \# - formato número
  • ¿Qué? Caps
  • Primera Cap
  • ¿Qué? Bajo
  • ¿Qué? Alto
  • \\\\\* CHARFORMAT - resultado de formato según el primer carácter del código de campo
  • \\\\\* MERGEFORMAT - resultado de formato según el formato del viejo resultado

Date and Number Formatting in Fields

Cuando Aspose.Words calcula un resultado de campo, que a menudo necesita parse una cadena en un valor número o fecha y también para formatearla de nuevo a una cadena. Por defecto Aspose.Words utiliza la actual cultura de hilo para realizar el análisis y el formato al calcular los valores de campo durante la actualización de campo y mail merge. También hay opciones proporcionadas en forma de FieldOptions clase que permite un control adicional sobre qué cultura se utiliza durante la actualización de campo%

  • por defecto FieldUpdateCultureSource propiedad se establece CurrentThread que formatos campos utilizando la actual cultura del hilo
  • esta propiedad se puede configurar FieldCode por lo que el lenguaje establecido en el código de campo del campo se utiliza para formatear en su lugar

Formato utilizando la cultura actual del pan

Para controlar la cultura utilizada durante el cálculo del campo, simplemente establecer el CurrentCulture propiedad a una cultura de su elección antes de invocar cálculo de campo.

El siguiente ejemplo de código muestra cómo cambiar la cultura utilizada en los campos de formato durante la actualización:

EXAMPLE (utiliza el envoltorio público ActualThreadSettings.getLocale() y setLocale() en lugar de la privada Thread.CurrentThread.CurrentCulture)

Utilizar la cultura actual para formatear campos permite que un sistema controle de forma fácil y consistente cómo todos los campos del documento se formatean durante la actualización de campo.

Formato utilizando la Cultura en el Documento

Por otro lado, Microsoft Word formatos cada campo individual basado en el lenguaje del texto encontrado en el campo (específicamente, las carreras del código de campo). A veces durante la actualización de campo puede ser el comportamiento deseado, por ejemplo si usted tiene documentos globalizados que contienen contenido compuesto de muchos idiomas diferentes y quisiera que cada campo honrara al local utilizado del texto. Aspose.Words también soporta esta funcionalidad.

El Document clase proporciona una FieldOptions propiedad que contiene miembros que pueden utilizarse para controlar cómo se actualizan los campos dentro del documento.

El siguiente ejemplo de código muestra cómo especificar dónde se utiliza la cultura para el formato de fecha durante la actualización del campo y mail merge es elegido de:

EXAMPLEO