Dokumentenautomatisierungsfelder (IF, COMPARE, MACROBUTTON und Mehr)
Dokumentautomatisierungsfelder (IF, COMPARE und mehr)
Dieses Handbuch zeigt, wie man mit der Dokumentautomatisierungsfeldfamilie von Word in Aspose.Words FOSS für .NET – Felder, die bedingten Text steuern, dokumentbezogene Variablen speichern und Makros, Navigation sowie Druckverhalten verknüpfen, anstatt lediglich einen berechneten Wert anzuzeigen. Jeder ist ein Field Unterklasse im Aspose.Words.Fields Namensraum: FieldIf, FieldCompare, FieldDocVariable, FieldGoToButton, FieldMacroButton, und FieldPrint. Alle erben den Kern Field Mitglieder, die in Arbeiten mit Feldern – GetFieldCode(), Update(), Remove(), Unlink(), Start/Separator/End, Result, und Format – diese Seite behandelt, was jeweils spezifisch ist.
Bedingter Text mit FieldIf
FieldIf implementiert das IF Feld. LeftExpression, ComparisonOperator, und RightExpression beschreiben die Bedingung – die gleiche dreiteilige Form, die von IComparisonExpressionEvaluator (siehe Arbeiten mit Feldern) – und TrueText / FalseText halten die beiden möglichen Ergebnisse. Aufrufen EvaluateCondition() um die Bedingung direkt zu evaluieren; sie gibt ein FieldIfComparisonResult Wert: True, False, oder Error.
Vergleich von Werten mit FieldCompare
FieldCompare implementiert das COMPARE-Feld. Wie FieldIf stellt es LeftExpression, ComparisonOperator und RightExpression zur Beschreibung des Vergleichs bereit, liefert jedoch ein boolesches Ergebnis, anstatt zwischen zwei Textalternativen zu wechseln.
Dokumentvariablen mit FieldDocVariable
FieldDocVariable implementiert das DOCVARIABLE-Feld und liest eine benannte, dokumentbezogene Variable über seine VariableName-Eigenschaft.
Schaltflächen: FieldGoToButton und FieldMacroButton
FieldGoToButton implementiert das GOTOBUTTON-Feld: Location bezeichnet das Lesezeichen, die Seite oder ein anderes Ziel, zu dem gesprungen werden soll, und DisplayText ist die im Dokument angezeigte Beschriftung. FieldMacroButton implementiert das MACROBUTTON-Feld: MacroName bezeichnet das auszuführende Makro und DisplayText ist die Beschriftung. Sowohl FieldIf als auch FieldMacroButton implementieren zusätzlich IMergeFieldSurrogate, die Schnittstelle, die Word-Felder, die Seriendruck unterstützen, verwenden, um sich selbst als ersetzbaren Inhalt zu kennzeichnen.
Druckanweisungen mit FieldPrint
FieldPrint implementiert das PRINT-Feld: PrinterInstructions und PostScriptGroup enthalten druckspezifische Anweisungen, die direkt im Dokument eingebettet sind.
Tipps und bewährte Verfahren
- Verwenden Sie
FieldIf.EvaluateCondition(), um das Ergebnis einer Bedingung (FieldIfComparisonResult) auszulesen, ohneTrueText/FalseTextselbst zu parsen. FieldCompareundFieldIfteilen die gleicheLeftExpression/ComparisonOperator/RightExpression-Struktur – Code, der einen Vergleichsausdruck erstellt oder inspiziert, kann für beide Feldtypen wiederverwendet werden.- Denken Sie daran, dass dies alles
FieldUnterklassen:GetFieldCode(),Update(),Remove(), undUnlink()from Arbeiten mit Feldern auf exakt dieselbe Weise hier anwenden.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
FieldIf.EvaluateCondition() gibt Error zurück | Die Operanden oder der Operator der Bedingung konnten nicht wie geschrieben ausgewertet werden | Überprüfen Sie LeftExpression, ComparisonOperator und RightExpression auf gültige Werte |
Das Ergebnis von FieldDocVariable entspricht nicht dem erwarteten Variablenwert | VariableName stimmt nicht mit einem tatsächlich im Dokument vorhandenen Variablennamen überein | Bestätigen Sie den genauen Variablennamen und dessen Vorhandensein, bevor Sie Result lesen |
Der Anzeigetext von FieldGoToButton/FieldMacroButton stimmt nicht mit dem überein, was Word anzeigt | DisplayText wurde gelesen, bevor das Feld aktualisiert wurde, oder wurde gesetzt, ohne dass ein entsprechender Update()-Aufruf erfolgte | Rufen Sie Update() für das Feld auf oder lesen Sie DisplayText nach jeder Änderung erneut ein |
FAQ
Wie lese ich das Ergebnis eines bedingten IF-Feldes?
Rufen Sie FieldIf.EvaluateCondition() für das rohe FieldIfComparisonResult auf oder lesen Sie TrueText / FalseText für die beiden wörtlichen Textalternativen, zwischen denen das Feld wechselt.
Was ist der Unterschied zwischen FieldIf und FieldCompare?
FieldIf (das IF-Feld) wechselt basierend auf seiner Bedingung zwischen TrueText und FalseText. FieldCompare (das COMPARE-Feld) verwendet dieselbe Vergleichsform, liefert jedoch ein boolesches Ergebnis statt alternativen Textes.
Wie lese ich den Namen einer Dokumentvariablen aus einem DOCVARIABLE-Feld?
Lesen Sie FieldDocVariable.VariableName.
Wie finde ich das Ziel eines GOTOBUTTON-Feldes?
Lesen Sie FieldGoToButton.Location; DisplayText gibt das im Dokument angezeigte Label für die Schaltfläche an.
API Reference Zusammenfassung
| Klasse / Aufzählung | Beschreibung |
|---|---|
FieldIf | IF Feld; LeftExpression, ComparisonOperator, RightExpression, TrueText, FalseText, EvaluateCondition() |
FieldIfComparisonResult | Enum-Ergebnis von FieldIf.EvaluateCondition(): True, False, Error |
FieldCompare | COMPARE Feld; LeftExpression, ComparisonOperator, RightExpression |
FieldDocVariable | DOCVARIABLE Feld; VariableName |
FieldGoToButton | GOTOBUTTON Feld; Location, DisplayText |
FieldMacroButton | MACROBUTTON Feld; MacroName, DisplayText |
FieldPrint | PRINT Feld; PrinterInstructions, PostScriptGroup |