Overzicht Velden

Aspose.Words is een klassenbibliotheek die is ontworpen voor server-side verwerking van Microsoft Word documenten en ondersteunt velden op de volgende manieren:

  • alle velden in een document blijven behouden tijdens openen / opslaan en conversies
  • het is mogelijk om de resultaten van de meeste velden bij te werken

In dit artikel zullen we meer te weten komen over veldstructuur, de velden die worden ondersteund in Aspose.Words en details over het werken met dergelijke velden.

Velden Structuur

Een veld bestaat uit::

  • De veldstart-en scheidingsknooppunten worden gebruikt om de inhoud te omvatten die de veldcode vormt (normaal gesproken als gewone tekst).
  • De veldscheiding en het veldeinde omvatten het velderesultaat. Dit kan bestaan uit verschillende soorten inhoud, variërend van tekst tot alinea ' s tot tabellen.
  • Sommige velden hebben mogelijk geen scheidingsteken, wat betekent dat de volledige inhoud de veldcode vormt.
  • De veldcode definieert het gedrag van het veld en bestaat uit de veldidentificatie en vaak andere parameters zoals veldnamen en schakelaars.
  • Het veldresultaat bevat de meest recente evaluatie van het veld. Deze waarde wordt opgeslagen in het veldresultaat en wordt weergegeven aan de gebruiker. Sommige velden hebben mogelijk geen veldresultaten, waardoor er niets in het document wordt weergegeven. Evenzo zijn sommige velden mogelijk nog niet bijgewerkt en hebben ze daarom ook geen veldresultaat.

fields-overview-aspose-words-cpp-1

De inhoud die de veldcode vormt, wordt opgeslagen als Run knooppunten tussen de FieldStart en FieldSeparator. Het veldresultaat wordt opgeslagen tussen de FieldSeparator en FieldEnd knooppunten en kan bestaan uit verschillende soorten inhoud. Normaal gesproken bevat het velderesultaat alleen tekst die bestaat uit Run knooppunten, maar het is mogelijk dat de FieldEnd knoop zich in een compleet andere alinea bevindt, waardoor het velderesultaat bestaat uit nodes op blokniveau zoals Table en Paragraph nodes ook.

Hier is een weergave van hoe een veld wordt opgeslagen in Aspose.Words met behulp van het voorbeeld “DocumentExplorer”.

fields-overview-aspose-words-cpp-2

Velden in het Aspose.Words Document Object Model (DOM)

Wanneer een document in Aspose.Words wordt geladen, worden de velden van het document in de Aspose.Words Document Object Model als een set van afzonderlijke componenten (nodes). Een enkel veld wordt geladen als een verzameling van FieldStart, FieldSeparator en FieldEnd knooppunten samen met de inhoud tussen deze knooppunten. Als een veld geen veldresultaat heeft, zal er geen FieldSeparator knooppunt zijn. Al deze knooppunten worden altijd inline gevonden (Als kinderen van Paragraph of SmartTag).

In Aspose.Words is elk van de FieldXXX knooppunten afgeleid van FieldChar. Deze klasse biedt een eigenschap om het type veld te controleren dat wordt weergegeven door het opgegeven knooppunt via de eigenschap FieldType. Bijvoorbeeld FieldType.FieldMergeField staat voor een samenvoegveld in het document.

Ondersteunde Velden

Berekening van de volgende velden wordt ondersteund in de huidige versie van Aspose.Words:

  • = (formule)
  • ADDRESSBLOCK
  • ASK
  • AUTHOR
  • AUTONUM
  • AUTONUMLGL
  • AUTONUMOUT
  • AUTOTEXT
  • BARCODE
  • COMMENTS
  • COMPARE
  • CREATEDATE
  • DATABASE
  • DATE
  • DISPLAYBARCODE
  • DOCPROPERTY
  • DOCVARIABLE
  • EDITTIME
  • EQ
  • FILENAME
  • FILESIZE
  • FILLIN
  • FORMCHECKBOX
  • FORMDROPDOWN
  • FORMTEXT
  • GLOSSARY
  • GOTOBUTTON
  • GREETINGLINE
  • HYPERLINK
  • IF
  • IMPORT
  • INCLUDE
  • INCLUDEPICTURE
  • INCLUDETEXT
  • INDEX
  • INFO
  • KEYWORDS
  • LASTSAVEDBY
  • LISTNUM
  • MACROBUTTON
  • MERGEBARCODE
  • MERGEFIELD
  • MERGEREC
  • MERGESEQ
  • NEXT
  • NEXTIF
  • NOTEREF
  • NUMCHARS
  • NUMPAGES
  • NUMWORDS
  • PAGE
  • PAGEREF
  • PRINTDATE
  • QUOTE
  • REF
  • REVNUM
  • SAVEDATE
  • SECTION
  • SECTIONPAGES
  • SEQ
  • SET
  • SHAPE
  • SKIPIF
  • STYLEREF
  • SUBJECT
  • SYMBOL
  • TEMPLATE
  • TIME
  • TITLE
  • TOA
  • TOC
  • USERADDRESS
  • USERINITIALS
  • USERNAME

Geavanceerde Veldparsing

Aspose.Words volgt de manier waarop Microsoft Word velden verwerkt en verwerkt daardoor correct:

  • geneste velden: IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
  • veldargument kan het resultaat zijn van een genest veld
  • velden kunnen zowel in een veldcode als in het veldresultaat worden genesteld
  • spaties / geen spaties, aanhalingstekens / geen aanhalingstekens, escape-tekens in velden enz.: MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
  • velden met meerdere alinea ' s

Formuleveld

Aspose.Words biedt een zeer serieuze implementatie van de formula engine en ondersteunt de volgende:

  • rekenkundige en logische operatoren: =(54+4*(6-77)-(5))+(-6-5)/4/5
  • functie: =ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
  • verwijzingen naar bladwijzers: =IF(C>4, 5,ABS(A)*.76) +3.85
  • aantal opmaakschakelaars: =00000000 \\\# "$#,##0.00;($#,##0.00)"

De volgende functies in uitdrukkingen worden ondersteund: ABS, AND, AVERAGE, COUNT, DEFINED, FALSE, IF, INT, MAX, MIN, MOD, NOT, OR, PRODUCT, ROUND, SIGN, SUM, TRUE.

IF and COMPARE Fields

Slechts enkele van de IF uitdrukkingen die Aspose.Words gemakkelijk kan berekenen, zouden u een idee moeten geven van hoe krachtig deze functie is:

  • IF 3 > 5.7^4+MAX(4,3) True False
  • IF "abcd" > "abc" True False
  • IF "?ab*" = "1abdsg" True False
  • IF 4 = "2*2" True False
  • COMPARE 3+5/34 < 4.6/3/2

DATE and TIME Fields

Aspose.Words ondersteunt alle datum - en tijdopmaakschakelaars die beschikbaar zijn in Microsoft Word, enkele voorbeelden zijn::

  • DATE @ "d-MMM-yy"
  • DATE @ "d/MM/yyyy h:mm am/pm

Mail Merge velden

Aspose.Words legt geen limiet op aan de complexiteit van Mail Merge velden in uw documenten en ondersteunt geneste IF en formulevelden en kan zelfs de naam van het samenvoegveld berekenen met behulp van een formule.

Enkele voorbeelden van Mail Merge velden die Aspose.Words ondersteunt:

  • Mail merge veldschakelaars: MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
  • geneste samenvoegvelden in een formule: IF { MERGEFIELDValue1 } >= {MERGEFIELD Value2 } True False
  • bereken de naam van het veld samenvoegen tijdens runtime: MERGEFIELD { IF{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • voorwaardelijk verplaatsen naar de volgende record in de gegevensbron: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 2, -.45) }

Formaatschakelaars

Een veld in een document kan opmaakschakelaars hebben die aangeven hoe de resulterende waarde moet worden opgemaakt. Aspose.Words ondersteunt de volgende opmaakschakelaars:

  • @ - datum-en tijdopmaak
  • \# - nummeropmaak
  • \\\\* Caps
  • \\\\* FirstCap
  • \\\\* Lower
  • \\\\* Upper
  • \\\\* CHARFORMAT - resultaat opmaken volgens het eerste teken van de veldcode
  • \\\\* MERGEFORMAT - resultaat opmaken volgens hoe het oude resultaat is opgemaakt

Datum - en nummeropmaak in Velden

Wanneer Aspose.Words een veldresultaat berekent, moet het vaak een tekenreeks ontleden in een getal - of datumwaarde en ook om het terug te formatteren naar een string.By standaard Aspose.Words gebruikt de huidige threadcultuur om parsing en opmaak uit te voeren bij het berekenen van veldwaarden tijdens veldupdate en mail merge. Er zijn ook opties in de vorm van de FieldOptions - klasse die verdere controle mogelijk maakt over welke cultuur wordt gebruikt tijdens het bijwerken van het veld.

  • standaard is de eigenschap FieldUpdateCultureSource ingesteld op CurrentThread welke velden opmaakt met de huidige threadcultuur
  • deze eigenschap kan worden ingesteld op FieldCode, zodat de taal die is ingesteld uit de veldcode van het veld in plaats daarvan wordt gebruikt voor het opmaken

Formatteren met de cultuur van de huidige Thread

Om de cultuur te bepalen die tijdens de veldberekening wordt gebruikt, stelt u de eigenschap CurrentCulture in op een cultuur van uw keuze voordat u de veldberekening oproept.

Het volgende codevoorbeeld laat zien hoe u de cultuur kunt wijzigen die wordt gebruikt in opmaakvelden tijdens de update:

EXAMPLE

Door de huidige cultuur te gebruiken om velden te formatteren, kan een systeem eenvoudig en consistent bepalen hoe alle velden in het document worden geformatteerd tijdens het bijwerken van velden.

Opmaak met behulp van de cultuur in het Document

Aan de andere kant maakt Microsoft Word elk afzonderlijk veld op op basis van de taal van de tekst die in het veld wordt gevonden (met name de runs van de veldcode). Soms tijdens veldupdate kan dit het gewenste gedrag zijn, bijvoorbeeld als u geglobaliseerde documenten hebt die inhoud bevatten die uit veel verschillende talen bestaat en u wilt dat elk veld de taalinstelling respecteert die in de tekst wordt gebruikt. Aspose.Words ondersteunt ook deze functionaliteit.

De klasse Document biedt een eigenschap FieldOptions die leden bevat die kunnen worden gebruikt om te bepalen hoe velden in het document worden bijgewerkt.

Het volgende codevoorbeeld toont hoe u kunt opgeven waar de cultuur die wordt gebruikt voor datumopmaak tijdens veldupdate en Mail Merge is gekozen uit:

EXAMPLE