Inleiding tot de velden

Aspose.Words is een klasse bibliotheek ontworpen voor server-side verwerking van Microsoft Word documenteert en ondersteunt velden op de volgende manieren:

  • alle velden in een document worden bewaard tijdens open/opslaan en conversies
  • het is mogelijk de resultaten van de meeste velden bij te werken

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

Veldstructuur

Een veld bestaat uit:

  • De veldstart- en scheidingsknooppunten worden gebruikt om de inhoud van de veldcode te omvatten (normaal gesproken als platte tekst).
  • De veldscheider en het veldeinde omvatten het veldresultaat. Dit kan bestaan uit verschillende soorten content, variërend van tekstreeksen tot paragrafen tot tabellen.
  • Sommige velden kunnen geen scheidingsteken hebben wat betekent dat de gehele inhoud de veldcode vormt.
  • De veldcode definieert het gedrag van het veld en bestaat uit de veldidentificatie en vaak andere parameters zoals veldnaam en switches.
  • Het veldresultaat bevat de meest recente evaluatie van het veld. Deze waarde wordt opgeslagen in het veld resultaat en is wat wordt weergegeven aan de gebruiker. Sommige velden hebben mogelijk geen veldresultaat, zodat er niets in het document wordt weergegeven. Ook sommige velden kunnen nog niet worden bijgewerkt, dus zal ook geen veldresultaat hebben.

fields-aspose-words-java

De inhoud van de veldcode wordt opgeslagen als Run tussen FieldStart en FieldSeparator. Het veld resultaat wordt opgeslagen tussen de FieldSeparator en FieldEnd knooppunten en kunnen bestaan uit verschillende soorten inhoud. Normaal gesproken bevat het veldresultaat alleen tekst die bestaat uit Run knooppunten, maar het is mogelijk dat de FieldEnd knooppunt zich in een compleet andere paragraaf, en dus het maken van het veld resultaat bestaat uit Logische Nodesniveaus in een document zoals Table en Paragraph Knooppunten ook.

Hier ziet u hoe een veld wordt opgeslagen in Aspose.Words door gebruik te maken van het voorbeeld van “DocumentExplorer.” Github.

document-explorer-aspose-words-java

Velden Aspose.Words Document Object Model (DOM)

Wanneer een document geladen wordt <span notrans="<span notrans=" Aspose.Words"="">,"> de velden van het document in de Aspose.Words Document Object Model als een reeks 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 dan is er geen FieldSeparator Node. Al deze knooppunten zijn altijd inline (als kinderen van Paragraph of SmartTag.

In Aspose.Words elk van de FieldXXX nodes afkomstig van FieldChar. Deze klasse biedt een eigenschap om het type veld dat wordt weergegeven door de opgegeven knooppunt te controleren via de FieldType eigendom. Bijvoorbeeld FieldType.FieldMergeField vertegenwoordigt een merge-veld 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 (inclusief TOT en TOF)
  • USERADDRESS
  • USERINITIALS
  • USERNAME

Verfijnd veld ontleden

Aspose.Words volgt de weg Microsoft Word verwerkt velden en verwerkt als gevolg daarvan 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 binnen een veldcode als in het veldresultaat worden genest
  • spaties/geen spaties, citaten/geen aanhalingstekens, ontsnappingstekens in velden enz.: MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
  • velden die meerdere alinea’s bestrijken

Formulevelden

Aspose.Words een zeer serieuze uitvoering van de formulemotor en ondersteunt het volgende:

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

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

IF en COMPARE Velden

Slechts enkele van de IF uitdrukkingen die Aspose.Words kan gemakkelijk berekenen moet u een idee 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 en TIME Velden

Aspose.Words ondersteunt alle datum en tijd formattering switches beschikbaar in Microsoft Word, Enkele voorbeelden zijn:

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

Mail Merge Velden

Aspose.Words stelt geen beperking van de complexiteit van mail merge velden in uw documenten en ondersteunt geneste IF en formule velden en kan zelfs de merge veld te berekenen met behulp van een formule.

Enkele voorbeelden van mail merge velden die Aspose.Words ondersteunt:

  • Mail merge veldschakelaars: MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
  • samengevoegde velden in een formule: IF { MERGEFIELDValue1 } >= {MERGEFIELD Value2 } True False
  • Bereken de naam van het merge-veld op runtime: MERGEFIELD { ALS{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • voorwaardelijke overgang naar de volgende record in de gegevensbron: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 2, -.45) }

Formaat wisselen

Een veld in een document kan formatteringsschakelaars bevatten die aangeven hoe de resulterende waarde geformatteerd moet worden. Aspose.Words ondersteunt de volgende format switches:

  • datum en tijd formatteren
  • nummeropmaak
  • \\\* Caps
  • \\\* FirstCap
  • \\\* Lager
  • \\\* Boven
  • \\\\* CHARFORMAT-formaat resultaat volgens het eerste teken van de veldcode
  • \\\\* MERGEFORMAT-formaat resultaat volgens hoe het oude resultaat is geformatteerd

Date en nummeropmaak in velden

Wanneer Aspose.Words berekent een veldresultaat, het moet vaak een string verwerken in een getal of datum waarde en ook om het terug te formatteren naar een string. Standaard Aspose.Words gebruikt de huidige draadcultuur voor het verwerken en formatteren bij het berekenen van veldwaarden tijdens veldupdates 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 veldupdate%

  • standaard de FieldUpdateCultureSource eigenschap is ingesteld op CurrentThread welke velden formatteren met de huidige draadcultuur
  • deze eigenschap kan ingesteld worden op FieldCode dus de taal die is ingesteld uit de veldcode van het veld wordt gebruikt voor het formatteren in plaats daarvan

Formatteren met de huidige discussiecultuur

Om de cultuur die tijdens veldberekening wordt gebruikt te controleren, stel gewoon de CurrentCulture eigendom aan een cultuur van uw keuze voordat het beroep veldberekening.

Het volgende voorbeeld van code laat zien hoe je de cultuur kunt veranderen die gebruikt wordt in opmaakvelden tijdens update:

VOORBEELD (gebruik de publieke wrapper CurrentThreadSettings.getLocale() en setLocale() in plaats van de private Thread.CurrentThread.CurrentCulture)

Het gebruik van de huidige cultuur om velden te formatteren stelt een systeem in staat om eenvoudig en consequent te controleren hoe alle velden in het document worden geformatteerd tijdens veldupdate.

Opmaak met de cultuur in het document

Aan de andere kant, Microsoft Word formatteert elk individueel veld op basis van de taal van de tekst die in het veld wordt gevonden (in het bijzonder, de runs van de veldcode). Soms tijdens het bijwerken van het veld kan dit het gewenste gedrag zijn, bijvoorbeeld als je documenten hebt geglobaliseerd die inhoud bevatten bestaande uit vele verschillende talen en zou willen dat elke velden om de locale gebruikt uit de tekst te eren. Aspose.Words ondersteunt ook deze functionaliteit.

De Document klasse geeft a FieldOptions eigenschap die leden bevat die kunnen worden gebruikt om te controleren hoe velden worden bijgewerkt in het document.

Het volgende voorbeeld van code laat zien hoe te specificeren waar de cultuur gebruikt voor datumopmaak tijdens veldupdate en mail merge wordt gekozen uit:

VOORBEELD