Publipostage

Publipostage

Ce guide montre comment travailler avec les codes de champs de publipostage et les données de configuration de publipostage dans Aspose.Words FOSS pour .NET, et où se situe la limite avec l’exécution du publipostage. Aspose.Words FOSS pour .NET reconnaît et met à jour les codes de champs de publipostage Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, et SKIPIF — dans le cadre de son moteur d’évaluation des champs, et peut lire les données de configuration de publipostage (MailMergeSettings) persistées à l’intérieur d’un document. MailMerge.Execute() flux de travail familier du produit commercial — est not implémenté dans cette édition ; aucun MailMerge classe d’exécution n’existe pas dans la surface actuelle de API.


MERGEFIELD — Lecture et modification des espaces réservés de fusion

FieldMergeField implémente le champ MERGEFIELD. FieldName et FieldNameNoPrefix renvoient le nom de colonne de la source de données sous-jacente à laquelle le champ est lié, TextBefore/TextAfter contiennent le texte littéral entourant la valeur fusionnée, et IsMapped/IsVerticalFormatting indiquent le mappage du champ de fusion et les indicateurs de mise en page. Comme tout type de champ, il prend en charge GetFieldCode(), Update(), Unlink() et Remove().


ADDRESSBLOCK et GREETINGLINE

FieldAddressBlock implémente le champ ADDRESSBLOCK, avec FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat et LanguageId contrôlant la façon dont l’adresse du destinataire est formatée. FieldGreetingLine implémente GREETINGLINE, avec AlternateText, NameFormat et LanguageId contrôlant le texte de la salutation.


Champ DATABASE

FieldDatabase implémente le champ DATABASE, exposant les détails de connexion persistés dans le champ : Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord et LastRecord. Pour fournir les résultats de requête lorsque ce champ est mis à jour, implémentez IFieldDatabaseProvider et sa méthode GetQueryResult(fileName, connection, query, field), puis attribuez-le à Document.FieldOptions.FieldDatabaseProvider avant d’appeler Update(). La propriété Connection doit être définie — sans elle, Update() n’a aucune source de données à interroger.


Champs de fusion conditionnels — NEXTIF et SKIPIF

FieldNextIf et FieldSkipIf implémentent les champs NEXTIF et SKIPIF, chacun exposant LeftExpression, ComparisonOperator et RightExpression pour le test conditionnel. Document.FieldOptions.ComparisonExpressionEvaluator (un IComparisonExpressionEvaluator) peut remplacer la façon dont ces expressions conditionnelles sont évaluées.


Dimensionnement du champ de fusion d’image

MergeFieldImageDimension représente une largeur ou une hauteur pour une image insérée via un champ de fusion d’image, construite comme new MergeFieldImageDimension(value) (en points) ou new MergeFieldImageDimension(value, unit) avec un MergeFieldImageDimensionUnit explicite (Point ou Percent). Ses propriétés Value et Unit sont toutes deux modifiables.


Ce qui est inclus, et ce qui ne l’est pas

Document.MailMergeSettings renvoie un MailMergeSettings objet qui modélise la configuration de publipostage OOXML persiste à l’intérieur d’un document — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, et les paramètres de l’Office Data Source Object (ODSO) via OdsoFieldMapData/OdsoRecipientData collections. Il s’agit de la configuration data que le document porte, et non d’une connexion en direct : lecture et écriture MailMergeSettings ne se connecte pas à une base de données, une feuille de calcul ou une liste d’adresses, et cette édition n’a pas MailMerge de classe d’exécution pour lancer un publipostage et produire des documents de sortie remplis à partir de celui-ci. Ce que cette édition prend en charge, c’est la couche au niveau des champs ci-dessus : reconnaître, lire, mettre à jour et modifier les codes de champ de publipostage eux-mêmes dans un seul document via le moteur d’évaluation des champs.


Conseils et bonnes pratiques

  • Considérez MailMergeSettings comme des métadonnées de document que vous pouvez lire et faire circuler, pas comme un API pour se connecter à des données externes — il n’y a aucun moteur d’exécution derrière dans cette édition.
  • Définissez toujours FieldDatabase.Connection avant d’appeler Update() sur un champ DATABASE, sinon la mise à jour n’a rien à interroger.
  • Implémentez IFieldDatabaseProvider une fois et assignez-le via Document.FieldOptions.FieldDatabaseProvider pour centraliser la façon dont tous les champs DATABASE d’un document résolvent leurs données.
  • Utilisez FieldMergeField.FieldName pour lire à quelle colonne de source de données un MERGEFIELD est lié avant de décider comment le traiter programmatiquement.

Problèmes courants

ProblèmeCauseCorrection
FieldDatabase.Update() ne renvoie aucune donnéeConnection n’est pas défini, ou aucun IFieldDatabaseProvider n’est enregistréDéfinissez Connection et attribuez Document.FieldOptions.FieldDatabaseProvider avant de mettre à jour
Attendu un MailMerge.Execute()-style APIL’exécution de fusion avec une source de données externe n’est pas implémentée dans cette édition FOSSTravaillez directement avec les classes de champs de fusion (FieldMergeField, FieldDatabase, etc.) dans un seul document, ou utilisez le Aspose.Words commercial pour .NET afin d’obtenir une exécution complète de la fusion
Les conditions NEXTIF/SKIPIF s’évaluent de manière inattendueL’évaluation par défaut de l’expression de comparaison ne correspond pas à la sémantique attendueImplémentez IComparisonExpressionEvaluator et assignez-le à Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

Puis-je exécuter une fusion de courrier sur un CSV ou une base de données dans cette édition ?

Non. Cette édition implémente les codes de champs de fusion de courrier et le modèle de données de configuration MailMergeSettings, mais il n’existe aucun classe d’exécution MailMerge pour se connecter à une source de données externe et générer des documents remplis.

Que puis-je réellement faire avec les champs MERGEFIELD, alors?

Vous pouvez les lire et les modifier directement — FieldMergeField.FieldName pour le nom de colonne lié, TextBefore/TextAfter pour le texte littéral environnant, et Update()/Unlink()/Remove() comme tout autre champ — dans le document actuel.

Le MailMergeSettings est-il inutile sans exécution de la fusion?

Non — il reste utile pour lire ou refaire circuler la configuration de publipostage stockée d’un document, comme DataSource, Query ou MainDocumentType, même si cette édition n’agit pas sur cette configuration pour lancer une fusion.

Comment fournir des données pour un champ DATABASE?

Implémentez IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) et assignez votre implémentation à Document.FieldOptions.FieldDatabaseProvider avant d’appeler Update().

Comment contrôler la taille d’une image insérée par un champ de fusion d’image?

Utilisez MergeFieldImageDimension, construit avec une valeur en points ou une valeur accompagnée d’un MergeFieldImageDimensionUnit explicite (Point ou Percent).


API Reference Résumé

Classe / MéthodeDescription
FieldMergeFieldMERGEFIELD champ : FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK champ : propriétés de formatage d’adresse
FieldGreetingLinechamp GREETINGLINE : propriétés de formatage de la salutation
FieldDatabasechamp DATABASE : Connection, Query, FileName, TableFormat
IFieldDatabaseProviderFournit les résultats de requête pour les champs DATABASE via GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF champs de fusion conditionnels
MergeFieldImageDimensionLargeur/hauteur pour les images de champ de fusion
Document.MailMergeSettingsDonnées de configuration de publipostage persistantes (pas une connexion de données en direct)

Voir aussi

 Français