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.
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.
Velden Aspose.Words Document Object Model (DOM)
Wanneer een document geladen wordt 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.
Er zijn een aantal specifieke velden die bestaan in een Word-document die niet worden geïmporteerd in Aspose.Words als verzameling van FieldXXX knooppunten. Bijvoorbeeld, LINK
veld en INCLUDEPICTURE
veld worden geïmporteerd in Aspose.Words als a Shape object. Dit object biedt eigenschappen om te werken met de beeldgegevens die normaal worden opgeslagen in deze velden. Importeren INCLUDEPICTURE
veld als FieldXXX de PreserveIncludePictureField optie moet worden opgegeven als true.
Formuliervelden worden ook ingevoerd in Aspose.Words als hun eigen speciale klasse. De FormField klasse vertegenwoordigt een formulierveld in een Word-document en biedt extra methoden die specifiek zijn voor een formulierveld.
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 } >= {
MERGEFIELDValue2 } True False
- Bereken de naam van het merge-veld op runtime:
MERGEFIELD {
ALS{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- voorwaardelijke overgang naar de volgende record in de gegevensbron:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 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