Felderübersicht
Aspose.Words ist eine Klassenbibliothek, die für die serverseitige Verarbeitung von Microsoft Word-Dokumenten entwickelt wurde und Felder auf folgende Weise unterstützt:
- Alle Felder in einem Dokument bleiben beim Öffnen/Speichern und bei Konvertierungen erhalten
- Es ist möglich, die Ergebnisse der meisten Felder zu aktualisieren
In diesem Artikel erfahren wir mehr über die Feldstruktur, die in Aspose.Words unterstützten Felder und Einzelheiten zur Arbeit mit solchen Feldern.
Feldstruktur
Ein Feld besteht aus:
- Die Feldstart- und Trennknoten werden verwendet, um den Inhalt einzuschließen, aus dem der Feldcode besteht (normalerweise als einfacher Text).
- Das Feldtrennzeichen und das Feldende umfassen das Feldergebnis. Dabei kann es sich um verschiedene Arten von Inhalten handeln, von Textzeilen über Absätze bis hin zu Tabellen.
- Einige Felder verfügen möglicherweise nicht über ein Trennzeichen, was bedeutet, dass der gesamte Inhalt den Feldcode ausmacht.
- Der Feldcode definiert das Verhalten des Feldes und besteht aus der Feldkennung und häufig anderen Parametern wie Feldnamen und Schaltern.
- Das Feldergebnis enthält die aktuellste Auswertung des Feldes. Dieser Wert wird im Feld Ergebnis gespeichert und dem Benutzer angezeigt. Einige Felder verfügen möglicherweise über kein Feldergebnis und zeigen daher nichts im Dokument an. Ebenso kann es sein, dass einige Felder noch nicht aktualisiert werden und daher auch kein Feldergebnis haben.
Der Inhalt, aus dem der Feldcode besteht, wird als Run-Knoten zwischen FieldStart und FieldSeparator gespeichert. Das Feldergebnis wird zwischen den FieldSeparator- und FieldEnd-Knoten gespeichert und kann aus verschiedenen Inhaltstypen bestehen. Normalerweise enthält das Feldergebnis nur Text, der aus Run-Knoten besteht. Es ist jedoch möglich, dass sich der FieldEnd-Knoten in einem völlig anderen Absatz befindet und das Feldergebnis somit auch aus Logische Ebenen von Knoten in einem Dokument-Knoten wie Table und Paragraph-Knoten besteht.
Hier ist eine Ansicht, wie ein Feld in Aspose.Words gespeichert wird, anhand des “DocumentExplorer”-Beispiels, das auf Github zu finden ist.
Felder im Aspose.Words Document Object Model (DOM)
Wenn ein Dokument in Aspose.Words geladen wird, werden die Felder des Dokuments als Satz separater Komponenten (Knoten) in den Aspose.Words Document Object Model (DOM) geladen. Ein einzelnes Feld wird als Sammlung von FieldStart-, FieldSeparator- und FieldEnd-Knoten zusammen mit dem Inhalt zwischen diesen Knoten geladen. Wenn ein Feld kein Feldergebnis hat, gibt es keinen FieldSeparator-Knoten. Alle diese Knoten befinden sich immer inline (als untergeordnete Knoten von Paragraph oder SmartTag).
In Aspose.Words leitet sich jeder FieldXXX-Knoten von FieldChar ab. Diese Klasse stellt eine Eigenschaft bereit, um den Typ des Feldes zu überprüfen, das durch den angegebenen Knoten über die FieldType-Eigenschaft dargestellt wird. FieldType.FieldMergeField stellt beispielsweise ein Zusammenführungsfeld im Dokument dar.
Es gibt einige bestimmte Felder in einem Word-Dokument, die nicht als Sammlung von FieldXXX-Knoten in Aspose.Words importiert werden. Beispielsweise werden LINK
-Felder und INCLUDEPICTURE
-Felder als Shape-Objekt in Aspose.Words importiert. Dieses Objekt stellt Eigenschaften bereit, um mit den Bilddaten zu arbeiten, die normalerweise in diesen Feldern gespeichert sind. Um INCLUDEPICTURE
-Felder als FieldXXX-Knoten zu importieren, muss die PreserveIncludePictureField-Option als true angegeben werden.
Formularfelder werden auch als eigene spezielle Klasse in Aspose.Words importiert. Die FormField-Klasse stellt ein Formularfeld in einem Word-Dokument dar und stellt zusätzliche Methoden bereit, die speziell für ein Formularfeld gelten.
Unterstützte Felder
Die Berechnung der folgenden Felder wird in der aktuellen Version von Aspose.Words unterstützt:
- = (Formel)
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
Anspruchsvolle Feldanalyse
Aspose.Words folgt der Art und Weise, wie Microsoft Word Felder verarbeitet, und verarbeitet daher Folgendes korrekt:
- verschachtelte Felder:
IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
- Das Feldargument kann das Ergebnis eines verschachtelten Felds sein
- Felder können sowohl innerhalb eines Feldcodes als auch im Feldergebnis verschachtelt werden
- Leerzeichen/keine Leerzeichen, Anführungszeichen/keine Anführungszeichen, Escape-Zeichen in Feldern usw.:
MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
- Felder, die sich über mehrere Absätze erstrecken
Formelfelder
Aspose.Words bietet eine sehr seriöse Implementierung der Formel-Engine und unterstützt Folgendes:
- Arithmetische und logische Operatoren:
=(54+4*(6-77)-(5))+(-6-5)/4/5
- Funktionen:
=ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
- Verweise auf Lesezeichen:
=IF(C>4, 5,ABS(A)*.76) +3.85
- Schalter zur Zahlenformatierung:
=00000000 \\\# "$#,##0.00;($#,##0.00)"
Die folgenden Funktionen in Ausdrücken werden unterstützt: ABS
, AND
, AVERAGE
, COUNT
, DEFINED
, FALSE
, IF
, INT
, MAX
, MIN
, MOD
, NOT
, OR
, PRODUCT
, ROUND
, SIGN
, SUM
, TRUE.
IF
- und COMPARE
-Felder
Nur einige der IF
-Ausdrücke, die Aspose.Words leicht berechnen kann, sollen Ihnen eine Vorstellung davon geben, wie leistungsfähig diese Funktion ist:
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
- und TIME
-Felder
Aspose.Words unterstützt alle in Microsoft Word verfügbaren Datums- und Uhrzeitformatierungsschalter. Einige Beispiele sind:
DATE @ "d-MMM-yy"
DATE @ "d/MM/yyyy h:mm am/pm
Mail Merge-Felder
Aspose.Words setzt der Komplexität von mail merge-Feldern in Ihren Dokumenten keine Grenzen, unterstützt verschachtelte IF
- und Formelfelder und kann sogar den Namen des Zusammenführungsfelds mithilfe einer Formel berechnen.
Einige Beispiele für mail merge-Felder, die Aspose.Words unterstützt:
- Mail merge-Feldschalter:
MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
- Verschachtelte Zusammenführungsfelder in einer Formel:
IF {
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } True False
- Berechnen Sie den Namen des Zusammenführungsfelds zur Laufzeit:
MERGEFIELD {
IF{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- Bedingter Wechsel zum nächsten Datensatz in der Datenquelle:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 2, -.45) }
Formatschalter
Ein Feld in einem Dokument kann über Formatierungsschalter verfügen, die angeben, wie der resultierende Wert formatiert werden soll. Aspose.Words unterstützt die folgenden Formatwechsel:
- \@ – Formatierung von Datum und Uhrzeit
- \# – Zahlenformatierung
- \* Kappen
- \* FirstCap
- \* Untere
- \* Oberer, höher
- \* CHARFORMAT – Formatieren Sie das Ergebnis entsprechend dem ersten Zeichen des Feldcodes
- \* MERGEFORMAT – Ergebnis entsprechend der Formatierung des alten Ergebnisses formatieren
Date und Zahlenformatierung in Feldern
Wenn Aspose.Words ein Feldergebnis berechnet, muss es häufig eine Zeichenfolge in einen Zahlen- oder Datumswert analysieren und diese auch wieder in eine Zeichenfolge formatieren. Standardmäßig verwendet Aspose.Words die aktuelle Thread-Kultur, um bei der Berechnung von Feldwerten während der Feldaktualisierung eine Analyse und Formatierung durchzuführen und mail merge. Es gibt auch Optionen in Form der FieldOptions-Klasse, die eine weitere Kontrolle darüber ermöglichen, welche Kultur während der Feldaktualisierung verwendet wird.
– Standardmäßig ist die FieldUpdateCultureSource-Eigenschaft auf CurrentThread gesetzt, wodurch Felder mit der aktuellen Thread-Kultur formatiert werden – Diese Eigenschaft kann auf FieldCode gesetzt werden, sodass stattdessen die im Feldcode des Felds festgelegte Sprache für die Formatierung verwendet wird
Formatieren mit der Kultur des aktuellen Threads
Um die während der Feldberechnung verwendete Kultur zu steuern, legen Sie einfach die Thread.CurrentThread.CurrentCulture-Eigenschaft auf eine Kultur Ihrer Wahl fest, bevor Sie die Feldberechnung aufrufen.
Das folgende Codebeispiel zeigt, wie Sie die Kultur ändern, die während der Aktualisierung in Formatierungsfeldern verwendet wird:
Durch die Verwendung der aktuellen Kultur zum Formatieren von Feldern kann ein System einfach und konsistent steuern, wie alle Felder im Dokument während der Feldaktualisierung formatiert werden.
Formatierung mithilfe der Kultur im Dokument
Andererseits formatiert Microsoft Word jedes einzelne Feld basierend auf der Sprache des im Feld gefundenen Textes (insbesondere der Läufe aus dem Feldcode). Manchmal kann dies während der Feldaktualisierung das gewünschte Verhalten sein, beispielsweise wenn Sie globalisierte Dokumente mit Inhalten aus vielen verschiedenen Sprachen haben und möchten, dass jedes Feld das vom Text verwendete Gebietsschema berücksichtigt. Aspose.Words unterstützt diese Funktionalität ebenfalls.
Die Document-Klasse stellt eine FieldOptions-Eigenschaft bereit, die Mitglieder enthält, mit denen gesteuert werden kann, wie Felder im Dokument aktualisiert werden.
Das folgende Codebeispiel zeigt, wie Sie angeben, wo die für die Datumsformatierung während der Feldaktualisierung und mail merge verwendete Kultur ausgewählt wird: