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.

fields-aspose-words

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.

document-explorer-aspose-words

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.

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 } >= {MERGEFIELD Value2 } True False
  • Berechnen Sie den Namen des Zusammenführungsfelds zur Laufzeit: MERGEFIELD { IF{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • Bedingter Wechsel zum nächsten Datensatz in der Datenquelle: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 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: