Champs d'automatisation de documents (IF, COMPARE, MACROBUTTON et Plus)
Champs d’automatisation de documents (IF, COMPARE et plus)
Ce guide montre comment travailler avec la famille de champs d’automatisation de documents de Word dans Aspose.Words FOSS pour .NET – champs qui pilotent le texte conditionnel, stockent des variables à l’échelle du document et connectent les macros, la navigation et le comportement d’impression, plutôt que d’afficher simplement une valeur calculée. Chaque est un Field sous-classe dans le Aspose.Words.Fields espace de noms : FieldIf, FieldCompare, FieldDocVariable, FieldGoToButton, FieldMacroButton, et FieldPrint. Tous héritent du cœur Field membres décrits dans Travailler avec les champs – GetFieldCode(), Update(), Remove(), Unlink(), Start/Separator/End, Result, et Format – cette page couvre ce qui est spécifique à chaque.
Texte conditionnel avec FieldIf
FieldIf implémente le IF champ. LeftExpression, ComparisonOperator, et RightExpression décrit la condition – la même forme en trois parties utilisée par IComparisonExpressionEvaluator (voir Travailler avec les champs) – et TrueText / FalseText conservent les deux résultats possibles. Appelez EvaluateCondition() pour évaluer la condition directement ; il renvoie un FieldIfComparisonResult valeur: True, False, ou Error.
Comparer des valeurs avec FieldCompare
FieldCompare implémente le champ COMPARE. Comme FieldIf, il expose LeftExpression, ComparisonOperator et RightExpression pour décrire la comparaison, mais produit un résultat de type booléen plutôt que d’alterner entre deux alternatives textuelles.
Variables de document avec FieldDocVariable
FieldDocVariable implémente le champ DOCVARIABLE, lisant une variable nommée à portée du document via sa propriété VariableName.
Boutons : FieldGoToButton et FieldMacroButton
FieldGoToButton implémente le champ GOTOBUTTON: Location indique le signet, la page ou toute autre destination vers laquelle sauter, et DisplayText est le libellé affiché dans le document. FieldMacroButton implémente le champ MACROBUTTON: MacroName indique la macro à exécuter et DisplayText est le libellé. FieldIf et FieldMacroButton implémentent également IMergeFieldSurrogate, l’interface que les champs de publipostage de Word utilisent pour se marquer comme contenu substituable.
Instructions d’impression avec FieldPrint
FieldPrint implémente le champ PRINT: PrinterInstructions et PostScriptGroup contiennent des instructions spécifiques à l’imprimante incorporées directement dans le document.
Conseils et bonnes pratiques
- Utilisez
FieldIf.EvaluateCondition()pour lire le résultat d’une condition (FieldIfComparisonResult) sans avoir à analyser vous-mêmeTrueText/FalseText. FieldCompareetFieldIfpartagent la même formeLeftExpression/ComparisonOperator/RightExpression– le code qui crée ou inspecte une expression de comparaison peut être réutilisé pour les deux types de champs.- Rappelez-vous que ce sont tous
Fielddes sous-classes:GetFieldCode(),Update(),Remove(), etUnlink()from Travailler avec les champs appliquer exactement de la même façon ici.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
FieldIf.EvaluateCondition() renvoie Error | Les opérandes ou l’opérateur de la condition n’ont pas pu être évalués tels qu’ils sont écrits | Vérifiez LeftExpression, ComparisonOperator et RightExpression pour des valeurs valides |
Le résultat de FieldDocVariable ne reflète pas la valeur de variable attendue | VariableName ne correspond pas à un nom de variable réellement présent dans le document | Confirmez le nom exact de la variable et qu’il existe avant de lire Result |
Le texte affiché de FieldGoToButton/FieldMacroButton ne correspond pas à ce que Word montre | DisplayText a été lu avant que le champ ne soit mis à jour, ou a été défini sans un appel Update() correspondant | Appelez Update() sur le champ, ou relisez DisplayText après toute modification de celui-ci |
FAQ
Comment lire le résultat d’un champ conditionnel IF?
Appelez FieldIf.EvaluateCondition() pour le FieldIfComparisonResult brut, ou lisez TrueText / FalseText pour les deux alternatives de texte littéral entre lesquelles le champ bascule.
Quelle est la différence entre FieldIf et FieldCompare?
FieldIf (le champ IF) bascule entre TrueText et FalseText selon sa condition. FieldCompare (le champ COMPARE) partage la même forme de comparaison mais produit un résultat de type booléen plutôt qu’un texte alternatif.
Comment lire le nom d’une variable de document à partir d’un champ DOCVARIABLE?
Lire FieldDocVariable.VariableName.
Comment trouver la destination d’un champ GOTOBUTTON ?
Lire FieldGoToButton.Location; DisplayText fournit l’étiquette affichée pour le bouton dans le document.
API Reference Résumé
| Classe / Enum | Description |
|---|---|
FieldIf | IF champ ; LeftExpression, ComparisonOperator, RightExpression, TrueText, FalseText, EvaluateCondition() |
FieldIfComparisonResult | Résultat d’énumération de FieldIf.EvaluateCondition(): True, False, Error |
FieldCompare | COMPARE champ ; LeftExpression, ComparisonOperator, RightExpression |
FieldDocVariable | DOCVARIABLE champ ; VariableName |
FieldGoToButton | GOTOBUTTON champ; Location, DisplayText |
FieldMacroButton | MACROBUTTON champ; MacroName, DisplayText |
FieldPrint | PRINT champ; PrinterInstructions, PostScriptGroup |