Dokumentautomatiseringsfält (IF, COMPARE, MACROBUTTON och mer)
Dokumentautomatiseringsfält (IF, COMPARE och mer)
Den här guiden visar hur man arbetar med Word:s dokumentautomatiseringsfältfamilj i Aspose.Words FOSS för .NET – fält som styr villkorlig text, lagrar dokumentomfattande variabler och kopplar ihop makron, navigation och utskriftsbeteende, snarare än att bara visa ett beräknat värde. Varje är en Field subklass i Aspose.Words.Fields namnrymd: FieldIf, FieldCompare, FieldDocVariable, FieldGoToButton, FieldMacroButton, och FieldPrint. Alla ärver kärnan Field medlemmar som beskrivs i Arbeta med fält – GetFieldCode(), Update(), Remove(), Unlink(), Start/Separator/End, Result, och Format – den här sidan täcker vad som är specifikt för varje.
Villkorlig text med FieldIf
FieldIf implementerar IF fält. LeftExpression, ComparisonOperator, och RightExpression beskriver villkoret – samma tre-delade form som används av IComparisonExpressionEvaluator (se Arbeta med fält) – och TrueText / FalseText håll de två möjliga resultaten. Anropa EvaluateCondition() för att utvärdera villkoret direkt; den returnerar en FieldIfComparisonResult värde: True, False, eller Error.
Jämföra värden med FieldCompare
FieldCompare implementerar COMPARE-fältet. Liksom FieldIf exponerar den LeftExpression, ComparisonOperator och RightExpression för att beskriva jämförelsen, men ger ett booleskt resultat snarare än att växla mellan två textalternativ.
Dokumentvariabler med FieldDocVariable
FieldDocVariable implementerar DOCVARIABLE-fältet, och läser en namngiven dokumentomfattande variabel via dess VariableName-egenskap.
Knappar: FieldGoToButton och FieldMacroButton
FieldGoToButton implementerar GOTOBUTTON-fältet: Location namnger bokmärket, sidan eller annan destination att hoppa till, och DisplayText är etiketten som visas i dokumentet. FieldMacroButton implementerar MACROBUTTON-fältet: MacroName namnger makrot som ska köras och DisplayText är etiketten. Både FieldIf och FieldMacroButton implementerar dessutom IMergeFieldSurrogate, gränssnittet som Word’s mail-merge-medvetna fält använder för att markera sig som ersättningsbart innehåll.
Utskriftsinstruktioner med FieldPrint
FieldPrint implementerar PRINT-fältet: PrinterInstructions och PostScriptGroup innehåller skrivarspecifika instruktioner som är inbäddade direkt i dokumentet.
Tips och bästa praxis
- Använd
FieldIf.EvaluateCondition()för att läsa ett villkors resultat (FieldIfComparisonResult) utan att behöva tolkaTrueText/FalseTextsjälv. FieldCompareochFieldIfdelar sammaLeftExpression/ComparisonOperator/RightExpression-struktur – kod som bygger eller granskar ett jämförelseuttryck kan återanvändas för båda fälttyperna.- Kom ihåg att dessa är alla
Fieldsubklasser:GetFieldCode(),Update(),Remove(), ochUnlink()from Arbeta med fält tillämpas exakt på samma sätt här.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
FieldIf.EvaluateCondition() returnerar Error | Villkorets operander eller operator kunde inte utvärderas som skrivna | Kontrollera LeftExpression, ComparisonOperator och RightExpression för giltiga värden |
FieldDocVariable-resultatet återspeglar inte ett förväntat variabelvärde | VariableName matchar inte ett variabelnamn som faktiskt finns i dokumentet | Bekräfta det exakta variabelnamnet och att det finns innan du läser Result |
Visningstexten för FieldGoToButton/FieldMacroButton matchar inte vad Word visar | DisplayText lästes innan fältet uppdaterades, eller sattes utan ett motsvarande Update()-anrop | Anropa Update() på fältet, eller läs om DisplayText efter någon förändring av det |
FAQ
Hur läser jag resultatet av ett villkorligt IF-fält?
Anropa FieldIf.EvaluateCondition() för den råa FieldIfComparisonResult, eller läs TrueText / FalseText för de två bokstavliga textalternativen som fältet växlar mellan.
Vad är skillnaden mellan FieldIf och FieldCompare?
FieldIf (fältet IF) växlar mellan TrueText och FalseText baserat på dess villkor. FieldCompare (fältet COMPARE) har samma jämförelsestruktur men ger ett booleskt resultat snarare än alternativ text.
Hur läser jag ett dokumentvariabels namn från ett DOCVARIABLE-fält?
Läs FieldDocVariable.VariableName.
Hur hittar jag destinationen för ett GOTOBUTTON-fält?
Läs FieldGoToButton.Location; DisplayText ger etiketten som visas för knappen i dokumentet.
API Reference Sammanfattning
| Klass / Enum | Beskrivning |
|---|---|
FieldIf | IF fält; LeftExpression, ComparisonOperator, RightExpression, TrueText, FalseText, EvaluateCondition() |
FieldIfComparisonResult | Enum-resultat för FieldIf.EvaluateCondition(): True, False, Error |
FieldCompare | COMPARE fält; LeftExpression, ComparisonOperator, RightExpression |
FieldDocVariable | DOCVARIABLE fält; VariableName |
FieldGoToButton | GOTOBUTTON fält; Location, DisplayText |
FieldMacroButton | MACROBUTTON fält; MacroName, DisplayText |
FieldPrint | PRINT fält; PrinterInstructions, PostScriptGroup |