Combinar correspondencia

Combinar correspondencia

Esta guía muestra cómo trabajar con códigos de campo de combinación de correspondencia y datos de configuración de combinación de correspondencia en Aspose.Words FOSS para .NET, y dónde se encuentra el límite con la ejecución de la combinación. Aspose.Words FOSS para .NET reconoce y actualiza los códigos de campo de combinación de correspondencia de Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, y SKIPIF — como parte de su motor de evaluación de campos, y puede leer los datos de configuración de combinación de correspondencia (MailMergeSettings) persistidos dentro de un documento. Ejecutar una combinación real contra una fuente de datos externa para generar documentos de salida poblados — el MailMerge.Execute() flujo de trabajo familiar del producto comercial — está not implementado en esta edición; no MailMerge existe clase de ejecución en la superficie actual de API.


MERGEFIELD — Lectura y Modificación de Marcadores de Combinar

FieldMergeField implementa el campo MERGEFIELD. FieldName y FieldNameNoPrefix devuelven el nombre de columna subyacente de la fuente de datos al que está vinculado el campo, TextBefore/TextAfter contienen texto literal envuelto alrededor del valor combinado, y IsMapped/IsVerticalFormatting informan el mapeo del campo de combinación y las banderas de diseño. Como todo tipo de campo, admite GetFieldCode(), Update(), Unlink() y Remove().


ADDRESSBLOCK y GREETINGLINE

FieldAddressBlock implementa el campo ADDRESSBLOCK, con FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat y LanguageId controlando cómo se formatea la dirección del destinatario. FieldGreetingLine implementa GREETINGLINE, con AlternateText, NameFormat y LanguageId controlando el texto de saludo.


Campo DATABASE

FieldDatabase implementa el campo DATABASE, exponiendo los detalles de conexión almacenados en el campo: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord y LastRecord. Para proporcionar resultados de consulta cuando este campo se actualiza, implemente IFieldDatabaseProvider y su método GetQueryResult(fileName, connection, query, field), luego asígnelo a Document.FieldOptions.FieldDatabaseProvider antes de llamar a Update(). La propiedad Connection debe establecerse — sin ella, Update() no tiene una fuente de datos para consultar.


Campos de combinación condicional — NEXTIF y SKIPIF

FieldNextIf y FieldSkipIf implementan los campos NEXTIF y SKIPIF, cada uno exponiendo LeftExpression, ComparisonOperator y RightExpression para la prueba condicional. Document.FieldOptions.ComparisonExpressionEvaluator (un IComparisonExpressionEvaluator) puede sobrescribir cómo se evalúan estas expresiones condicionales.


Dimensionado del campo de combinación de imagen

MergeFieldImageDimension representa un ancho o alto para una imagen insertada mediante un campo de combinación de imagen, construida como new MergeFieldImageDimension(value) (en puntos) o new MergeFieldImageDimension(value, unit) con un MergeFieldImageDimensionUnit explícito (Point o Percent). Sus propiedades Value y Unit son ambas modificables.


Qué está dentro del alcance y qué no

Document.MailMergeSettings devuelve un MailMergeSettings objeto que modela la configuración de combinación de correspondencia OOXML persiste dentro de un documento — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, y la configuración del Office Data Source Object (ODSO) a través de OdsoFieldMapData/OdsoRecipientData colecciones. Esta es la configuración data que lleva el documento, no una conexión en tiempo real: leer y escribir MailMergeSettings no se conecta a una base de datos, hoja de cálculo o lista de direcciones, y esta edición no tiene MailMerge clase de ejecución para ejecutar una combinación y producir documentos de salida poblados a partir de ella. Lo que sí admite esta edición es la capa a nivel de campo superior: reconocer, leer, actualizar y modificar los propios códigos de campos de combinación dentro de un solo documento mediante el motor de evaluación de campos.


Consejos y mejores prácticas

  • Trate MailMergeSettings como metadatos del documento que puede leer y reenviar, no como un API para conectar con datos externos — no hay motor de ejecución detrás en esta edición.
  • Siempre establezca FieldDatabase.Connection antes de llamar a Update() en un campo DATABASE, o la actualización no tendrá nada que consultar.
  • Implemente IFieldDatabaseProvider una sola vez y asígnelo mediante Document.FieldOptions.FieldDatabaseProvider para centralizar cómo todos los campos DATABASE en un documento resuelven sus datos.
  • Utilice FieldMergeField.FieldName para leer a qué columna de origen de datos está vinculada una MERGEFIELD antes de decidir cómo procesarla programáticamente.

Problemas comunes

ProblemaCausaCorregir
FieldDatabase.Update() no devuelve datosConnection no está configurado, o no hay IFieldDatabaseProvider registradoEstablece Connection y asigna Document.FieldOptions.FieldDatabaseProvider antes de actualizar
Se esperaba un MailMerge.Execute() estilo APILa ejecución de fusión contra una fuente de datos externa no está implementada en esta edición FOSSTrabaja con las clases de campos de fusión directamente (FieldMergeField, FieldDatabase, etc.) dentro de un solo documento, o utiliza el Aspose.Words comercial para .NET para una ejecución completa de fusión
Las condiciones NEXTIF/SKIPIF se evalúan inesperadamenteLa evaluación predeterminada de la expresión de comparación no coincide con la semántica esperadaImplementa IComparisonExpressionEvaluator y asígnalo a Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

¿Puedo ejecutar una combinación de correspondencia contra un CSV o una base de datos en esta edición?

No. Esta edición implementa los códigos de campos de combinación de correspondencia y el modelo de datos de configuración MailMergeSettings, pero no hay una clase de ejecución MailMerge para conectar a una fuente de datos externa y generar documentos poblados.

¿Qué puedo hacer realmente con los campos MERGEFIELD, entonces?

Puedes leerlos y modificarlos directamente — FieldMergeField.FieldName para el nombre de columna enlazado, TextBefore/TextAfter para el texto literal circundante, y Update()/Unlink()/Remove() como cualquier otro campo — dentro del documento actual.

¿Es MailMergeSettings inútil sin la ejecución de la combinación?

No — sigue siendo útil para leer o hacer round-tripping de la configuración de combinación de correspondencia almacenada en un documento, como DataSource, Query o MainDocumentType, aunque esta edición no actúa sobre esa configuración para ejecutar una combinación.

¿Cómo suministro datos para un campo DATABASE?

Implementa IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) y asigna tu implementación a Document.FieldOptions.FieldDatabaseProvider antes de llamar a Update().

¿Cómo controlo el tamaño de una imagen insertada por un campo de combinación de imagen?

Utiliza MergeFieldImageDimension, construido con un valor de punto o un valor más un MergeFieldImageDimensionUnit explícito (Point o Percent).


API Reference Resumen

Clase / MétodoDescripción
FieldMergeFieldMERGEFIELD campo: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK campo: propiedades de formato de dirección
FieldGreetingLineGREETINGLINE campo: propiedades de formato de saludo
FieldDatabaseDATABASE campo: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderProporciona resultados de consulta para campos DATABASE mediante GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF campos de fusión condicional
MergeFieldImageDimensionAncho/alto para imágenes de campos de combinación de fotos
Document.MailMergeSettingsDatos de configuración de combinación de correspondencia persistentes (no una conexión de datos en tiempo real)

Ver también

 Español