Przegląd Pól
Aspose.Words to biblioteka klas przeznaczona do przetwarzania dokumentów Microsoft Word po stronie serwera i obsługuje pola w następujący sposób:
- wszystkie pola w dokumencie są zachowywane podczas otwierania / zapisywania i konwersji
- istnieje możliwość aktualizacji wyników większości pól
W tym artykule dowiemy się więcej o strukturze pól, polach obsługiwanych w Aspose.Words oraz szczegółach pracy z takimi polami.
Struktura Pól
Pole składa się z:
- Węzły początek pola i separator służą do objęcia zawartości, która składa się na kod pola (zwykle jako zwykły tekst).
- Separator pola i koniec pola obejmują wynik pola. Może to składać się z różnych rodzajów treści, od przebiegów tekstu, przez akapity i tabele.
- Niektóre pola mogą nie mieć separatora, co oznacza, że cała zawartość składa się na kod pola.
- Kod pola określa zachowanie pola i składa się z identyfikatora pola i często innych parametrów, takich jak nazwy pól i przełączniki.
- Wynik pola zawiera najnowszą ocenę pola. Ta wartość jest przechowywana w polu wynik i jest to, co jest wyświetlane użytkownikowi. Niektóre pola mogą nie mieć żadnych wyników pól, dlatego nie będą wyświetlać niczego w dokumencie. Podobnie, niektóre pola mogą nie być jeszcze aktualizowane, dlatego też nie będą miały wyniku pola.
Zawartość tworząca kod pola jest przechowywana jako Run węzły między FieldStart i FieldSeparator. Wynik pola jest przechowywany między węzłami FieldSeparator i FieldEnd i może składać się z różnych typów treści. Zwykle wynik pola zawiera tylko tekst złożony z węzłów Run, jednak możliwe jest, że węzeł FieldEnd znajduje się w zupełnie innym akapicie, a tym samym powoduje, że wynik pola składa się z węzły na poziomie bloku takich jak węzły Table i Paragraph.
Oto widok, w jaki sposób pole jest przechowywane w Aspose.Words przy użyciu przykładu “DocumentExplorer”.
Pola w modelu obiektowym dokumentu Aspose.Words (DOM)
Gdy dokument jest ładowany do Aspose.Words, pola dokumentu są ładowane do Aspose.Words Obiektowy Model Dokumentu jako zestaw oddzielnych komponentów (węzłów). Pojedyncze pole jest ładowane jako zbiór węzłów FieldStart, FieldSeparator i FieldEnd wraz z zawartością pomiędzy tymi węzłami. Jeśli pole nie ma wyniku pola, nie będzie węzła FieldSeparator. Wszystkie te węzły są zawsze Znalezione w linii (jako Dzieci Paragraph lub SmartTag).
W Aspose.Words każdy z FieldXXX węzłów pochodzi od FieldChar. Ta klasa zapewnia właściwość do sprawdzania typu pola reprezentowanego przez określony węzeł za pomocą właściwości FieldType. Na przykład FieldType.FieldMergeField reprezentuje pole scalania w dokumencie.
Istnieją pewne szczególne pola, które istnieją w dokumencie Word, które nie są importowane do Aspose.Words jako zbiór węzłów FieldXXX. Na przykład pole LINK
i pole INCLUDEPICTURE
są importowane do Aspose.Words jako obiekt Shape
. Ten obiekt zapewnia właściwości do pracy z danymi obrazu Zwykle przechowywanymi w tych polach. Aby zaimportować INCLUDEPICTURE
pole jako FieldXXX węzły, należy podać opcję PreserveIncludePictureField jako true.
Pola formularzy są również importowane do Aspose.Words jako ich własna Klasa specjalna. Klasa FormField reprezentuje pole formularza w dokumencie Word i zapewnia dodatkowe metody, które są specyficzne dla pola formularza.
Obsługiwane Pola
Obliczanie następujących pól jest obsługiwane w bieżącej wersji Aspose.Words:
- = (wzór)
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
Wyrafinowane Parsowanie Pola
Aspose.Words podąża za sposobem Microsoft Word przetwarza pola i w rezultacie poprawnie obsługuje:
- zagnieżdżone pola:
IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
- argument pola może być wynikiem zagnieżdżonego pola
- pola mogą być zagnieżdżone w kodzie pola, a także w wyniku pola
- spacje / brak spacji, cytaty / brak cudzysłowów, znaki ucieczki w polach itp.:
MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
- pola obejmujące wiele akapitów
Pola Formuł
Aspose.Words zapewnia bardzo poważną implementację silnika formuły i obsługuje następujące elementy:
- operatory arytmetyczne i logiczne:
=(54+4*(6-77)-(5))+(-6-5)/4/5
- funkcje:
=ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
- odniesienia do zakładek:
=IF(C>4, 5,ABS(A)*.76) +3.85
- przełączniki formatowania liczb:
=00000000 \\\# "$#,##0.00;($#,##0.00)"
Obsługiwane są następujące funkcje w wyrażeniach: ABS
, AND
, AVERAGE
, COUNT
, DEFINED
, FALSE
, IF
, INT
, MAX
, MIN
, MOD
, NOT
, OR
, PRODUCT
, ROUND
, SIGN
, SUM
, TRUE.
IF
and COMPARE
Fields
Tylko niektóre wyrażenia IF
, które Aspose.Words można łatwo obliczyć, powinny dać wyobrażenie o tym, jak potężna jest ta funkcja:
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 Obsługuje wszystkie przełączniki formatowania daty i godziny dostępne w Microsoft Word, niektóre przykłady to:
DATE @ "d-MMM-yy"
DATE @ "d/MM/yyyy h:mm am/pm
Mail Merge pola
Aspose.Words nie nakłada ograniczeń na złożoność pól Mail Merge W dokumentach i obsługuje zagnieżdżone pola IF
i formuły, a nawet może obliczyć nazwę pola scalania za pomocą formuły.
Kilka przykładów pól Mail Merge obsługujących Aspose.Words:
- Mail merge przełączniki polowe:
MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
- zagnieżdżone pola scalania w formule:
IF {
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } True False
- Oblicz nazwę pola scalania w czasie wykonywania:
MERGEFIELD {
IF{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- warunkowe przejście do następnego rekordu w źródle danych:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 2, -.45) }
Przełączniki Formatu
Pole w dokumencie może mieć przełączniki formatowania, które określają sposób formatowania wynikowej wartości. Aspose.Words obsługuje następujące przełączniki formatu:
- @ - formatowanie daty i godziny
- \# - Formatowanie liczb
- \\\\* Caps
- \\\\* FirstCap
- \\\\* Lower
- \\\\* Upper
- \\\ \* CHARFORMAT - Formatuj wynik zgodnie z pierwszym znakiem kodu pola
- \\\ \* MERGEFORMAT - Formatuj wynik zgodnie ze sposobem sformatowania starego wyniku
Formatowanie daty i numeru w polach
Kiedy Aspose.Words oblicza wynik pola, często musi przeanalizować ciąg znaków na wartość liczby lub daty, a także sformatować go z powrotem do string.By domyślnie Aspose.Words używa bieżącej kultury wątku do analizowania i formatowania podczas obliczania wartości pól podczas aktualizacji pól i mail merge. Dostępne są również opcje w postaci klasy FieldOptions, która umożliwia dalszą kontrolę nad tym, która kultura jest używana podczas aktualizacji pola.
- domyślnie Właściwość FieldUpdateCultureSource jest ustawiona na CurrentThread, która formatuje pola przy użyciu bieżącej kultury wątku
- ta właściwość może być ustawiona na FieldCode, więc język ustawiony z kodu pola pola jest używany do formatowania
Formatowanie przy użyciu Kultury bieżącego wątku
Aby kontrolować kulturę używaną podczas obliczania pola, po prostu ustaw właściwość CurrentCulture na wybraną kulturę przed wywołaniem obliczenia pola.
Poniższy przykład kodu pokazuje, jak zmienić kulturę używaną w polach formatowania podczas aktualizacji:
EXAMPLE
Używanie bieżącej kultury do formatowania pól umożliwia systemowi łatwe i konsekwentne kontrolowanie sposobu formatowania wszystkich pól w dokumencie podczas aktualizacji pól.
Formatowanie przy użyciu Kultury w dokumencie
Z drugiej strony Microsoft Word formatuje każde pojedyncze pole na podstawie języka tekstu znalezionego w polu (w szczególności biegnie od kodu pola). Czasami podczas aktualizacji pola może to być pożądane zachowanie, na przykład jeśli masz zglobalizowane dokumenty zawierające zawartość złożoną z wielu różnych języków i chciałbyś, aby każde pole honorowało ustawienia regionalne użyte w tekście. Aspose.Words obsługuje również tę funkcję.
Klasa Document zapewnia Właściwość FieldOptions zawierającą elementy składowe, których można użyć do kontrolowania sposobu aktualizacji pól w dokumencie.
Poniższy przykład kodu pokazuje, jak określić, gdzie wybrana jest kultura używana do formatowania daty Podczas aktualizacji pola i Mail Merge:
EXAMPLE