Inleiding Tot Velde

Aspose.Words is’n klas biblioteek ontwerp vir bediener-kant verwerking van Microsoft Word dokumente en ondersteun velde in die volgende maniere:

  • alle velde in’n dokument word bewaar tydens open / save en omskakelings
  • dit is moontlik om resultate van die meeste velde te werk

In hierdie artikel sal ons meer leer oor veldstruktuur, die velde wat in Aspose.Words ondersteun word, en besonderhede van die werk met sulke velde.

Veldstruktuur

‘n veld bestaan uit:

  • Die veld begin en skeiding nodes word gebruik om die inhoud wat die veld kode (gewoonlik as gewone teks) te omvat.
  • Die veld skeiding en veld einde omvat die veld resultaat. Dit kan bestaan uit verskillende soorte inhoud wat wissel van teksreekse tot paragrawe tot tabelle.
  • Sommige velde mag nie’n skeiding wat beteken dat die hele inhoud maak die veld kode.
  • Die veldkode definieer die gedrag van die veld en bestaan uit die veld identifiseerder en dikwels ander parameters soos veld naam en skakelaars.
  • Die veldresultaat bevat die mees onlangse evaluering van die veld. Hierdie waarde is gestoor in die veld resultaat en is wat vertoon word aan die gebruiker. Sommige velde mag nie enige veldresultaat hê nie, dus sal niks in die dokument vertoon word nie. Net so kan sommige velde nog nie opgedateer word nie, daarom sal hulle ook geen veldresultaat hê nie.

fields-aspose-words-java

Die inhoud wat die veld kode maak gestoor as Run nodes tussen die FieldStart en FieldSeparator. Die veld resultaat is gestoor tussen die FieldSeparator en FieldEnd nodes en kan bestaan uit verskillende tipes van inhoud. Normaalweg bevat die veldresultaat net teks wat bestaan uit Run nodes, maar dit is moontlik dat Die FieldEnd node in’n heeltemal ander paragraaf geleë is, en sodoende die veldresultaat bestaan uit blokvlak-knope soos Table en Paragraph nodusse ook.

Hier is’n siening van hoe’n veld gestoor word in Aspose.Words deur die gebruik van die " DocumentExplorer" voorbeeld wat gevind kan word op Github.

document-explorer-aspose-words-java

Velde inAspose.Words Dokument Objek Model (DOM)

Wanneer’n dokument in Aspose.Words gelaai word, word die velde van die dokument in die Aspose.Words Document Object Model gelaai as’n stel afsonderlike komponente (nodes). ‘n enkele veld word gelaai as’n versameling van FieldStart, FieldSeparator en FieldEnd nodusse saam met die inhoud tussen hierdie nodusse. As’n veld nie’n veldresultaat het nie, sal daar geen FieldSeparator - knooppunt wees nie. Al hierdie nodusse word altyd inlyn gevind (as kinders van Paragraph of SmartTag.

In Aspose.Words is elkeen van die FieldXXX nodusse afgelei van FieldChar. Hierdie klas bied’n eienskap om die tipe veld wat deur die gespesifiseerde knoop deur die FieldType eienskap verteenwoordig word, te kontroleer. Byvoorbeeld FieldType.FieldMergeField verteenwoordig’n samesmelting veld in die dokument.

Ondersteunde Velde

Berekening van die volgende velde word ondersteun in die huidige weergawe 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 (including TOT and TOF)
  • USERADDRESS
  • USERINITIALS
  • USERNAME

Gevorderde Veld Ontleding

Aspose.Words volg die manier waarop Microsoft Word velde verwerk en as gevolg daarvan hanteer dit korrek:

  • gesponsorde velde: IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
  • veld argument kan’n gevolg van’n geneste veld wees
  • velde kan binne’n veldkode sowel as in die veldresultaat genesteer word
  • spasies/geen spasies, aanhalingstekens/geen aanhalingstekens, ontsnap karakters in velde ens.: MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
  • velde wat oor verskeie paragrawe strek

Formule Velde

Aspose.Words bied’n baie ernstige implementering van die formule enjin en ondersteun die volgende:

  • aritmetiese en logiese operateurs: =(54+4*(6-77)-(5))+(-6-5)/4/5
  • funksies: =ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
  • verwysings na boekmerke: =IF(C>4, 5,ABS(A)*.76) +3.85
  • nommer formatering skakelaars: =00000000 \\\# "$#,##0.00;($#,##0.00)"

Die volgende funksies in uitdrukkings word ondersteun: ABS, AND, AVERAGE, COUNT, DEFINED, FALSE, IF, INT, MAX, MIN, MOD, NOT, OR, PRODUCT, ROUND, SIGN, SUM, TRUE.

IF and COMPARE Fields

Net’n paar van die IF uitdrukkings wat Aspose.Words maklik kan bereken, moet jou’n idee gee van hoe kragtig hierdie kenmerk 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 ondersteun alle datum en tyd formatering skakelaars beskikbaar in Microsoft Word, ‘n paar voorbeelde is:

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

Mail Merge Velde

Aspose.Words stel geen beperking op die kompleksiteit van mail merge velde in jou dokumente en ondersteun geneste IF en formule velde en kan selfs bereken die samesmelting veld se naam met behulp van’n formule.

‘n paar voorbeelde van mail merge velde wat Aspose.Words ondersteun:

  • Mail merge veldskakelaars: MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
  • geneste saamvoeg velde in’n formule: IF { MERGEFIELDValue1 } >= {MERGEFIELD Value2 } True False
  • bereken die naam van die merge-veld tydens looptyd: MERGEFIELD { IF{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • voorwaardelike skuif na volgende rekord in die databron: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 2, -.45) }

Formaatskakelaars

‘n veld in’n dokument kan formatering skakelaars wat spesifiseer hoe die gevolglike waarde moet geformateer word. Aspose.Words ondersteun die volgende formaat skakelaars:

  • @ - datum en tyd formatering
  • \# - getalformatering
  • \\\\* Caps
  • \\\\* FirstCap
  • \\\\* Lower
  • \\\\* Upper
  • \\\\* CHARFORMAT - formaat resultaat volgens die eerste karakter van die veld kode
  • \\\\* MERGEFORMAT - formateer resultaat volgens hoe die ou resultaat geformateer is

Datum En Nommer Formatering In Velde

Wanneer Aspose.Words bereken’n veld resultaat, dit dikwels nodig het om’n string te ontleed in’n getal of datum waarde en ook om dit terug te formateer na’n string.By standaard Aspose.Words gebruik die huidige draadkultuur om ontleding en formatering uit te voer wanneer veldwaardes bereken word tydens veldopdatering en mail merge. Daar is ook opsies wat in die vorm van die FieldOptions klas wat verdere beheer oor watter kultuur gebruik word tydens veld update toelaat%

  • by verstek is die FieldUpdateCultureSource eienskap ingestel op CurrentThread wat velde formateer met behulp van die huidige draad kultuur
  • hierdie eienskap kan ingestel word op FieldCode sodat die taal stel van die veld kode van die veld gebruik word vir formatering in plaas daarvan

Formatering met Behulp Van Die Huidige Draad Se Kultuur

Om die kultuur wat tydens veldberekening gebruik word, te beheer, stel net die CurrentCulture eienskap op’n kultuur van jou keuse voordat jy veldberekening aanroep.

Die volgende kode voorbeeld toon hoe om die kultuur wat gebruik word in die formatering velde tydens update verander:

EXAMPLE (gebruik die openbare verpakking CurrentThreadSettings.getLocale() en setLocale() in plaas van die private Thread.CurrentThread.CurrentCulture)

Die gebruik van die huidige kultuur om velde te formateer, laat’n stelsel toe om maklik en konsekwent te beheer hoe alle velde in die dokument geformateer word tydens veldopdatering.

Formatering met Behulp Van Die Kultuur in Die Dokument

Aan die ander kant, Microsoft Word formateer elke individuele veld gebaseer op die taal van die teks wat in die veld gevind word (spesifiek, die loop van die veldkode). Soms tydens veldopdatering kan dit die gewenste gedrag wees, byvoorbeeld as jy geglobaliseerde dokumente het wat inhoud bevat wat uit baie verskillende tale bestaan en wil hê dat elke veld die ligging wat uit die teks gebruik word, moet eer. Aspose.Words ondersteun ook hierdie funksie.

Die Document klas bied’n FieldOptions eienskap wat lede bevat wat gebruik kan word om te beheer hoe velde is opgedateer binne die dokument.

Die volgende kode voorbeeld toon hoe om te spesifiseer waar die kultuur wat gebruik word vir datum formatering tydens veld update en mail merge is gekies uit:

EXAMPLE