Úvod do polí
Aspose.Words je třídní knihovna určená pro zpracování na straně serveru Microsoft Word dokumenty a podporuje pole těmito způsoby:
- všechna pole v dokumentu jsou zachována během otevřených/spasených a konverzí
- je možné aktualizovat výsledky většiny polí
V tomto článku se dozvíme více o struktuře terénu, podpořených oblastech Aspose.Words, a podrobnosti o práci s těmito poli.
Struktura pole
Pole sestává z:
- Spouštěcí a oddělovačové uzly pole se používají k pokrytí obsahu, který tvoří kód pole (obvykle jako prostý text).
- Oddělovač pole a konec pole zahrnuje výsledek pole. To se může skládat z různých typů obsahu od průběhu textu po odstavce až po tabulky.
- Některá pole nemusí mít oddělovač, což znamená, že celý obsah tvoří kód pole.
- Kód pole definuje chování pole a je tvořen identifikátorem pole a často dalšími parametry, jako je název pole a přepínače.
- Výsledkem oboru je nejnovější hodnocení oboru. Tato hodnota se uloží do výsledku pole a zobrazí se uživateli. Některá pole nemusí mít žádný výsledek pole, takže se v dokumentu nic nezobrazí. Stejně tak nemusí být některá pole aktualizována, a proto nebude mít výsledek ani pole.
Obsah, který tvoří kód pole, je uložen jako Run uzly mezi FieldStart a FieldSeparator. Výsledek pole je uložen mezi FieldSeparator a FieldEnd uzly a mohou být složeny z různých typů obsahu. Normálně výsledek pole obsahuje pouze text tvořený uzly Run, nicméně je možné, aby se uzel FieldEnd nacházel v úplně jiném odstavci, a tím se výsledek pole skládá z Logické orgány v dokumentu např. Table a Paragraph Taky uzly.
Zde je pohled na to, jak je pole uloženo v Aspose.Words pomocí příkladu Github.
Pole Aspose.Words Document Object Model (DOM)
Při načtení dokumentu Aspose.Words, pole dokumentu jsou naložena do Aspose.Words Document Object Model jako sada samostatných součástí (nod). Jedno pole je naloženo jako sbírka FieldStart, FieldSeparator a FieldEnd uzly spolu s obsahem mezi těmito uzly. Pokud pole nemá výsledek pole, pak nebude FieldSeparator Uzel. Všechny tyto uzly jsou vždy nalezeny inline (jako děti Paragraph nebo SmartTag.
In Aspose.Words každý z FieldXXX uzly pocházejí z FieldChar. Tato třída poskytuje vlastnost pro kontrolu typu pole zastoupeného daným uzlem prostřednictvím FieldType majetek. Například FieldType.FieldMergeField
představuje pole sloučení v dokumentu.
Existují určitá pole, která existují v dokumentu Word, který není dovezen do Aspose.Words jako kolekce FieldXXX uzly. Například, LINK
pole a INCLUDEPICTURE
pole se dováží do Aspose.Words jako Shape objekt. Tento objekt poskytuje vlastnosti pro práci s obrazovými daty běžně uloženými v těchto polích. Importovat INCLUDEPICTURE
pole jako FieldXXX uzel PreserveIncludePictureField možnost musí být specifikována jako true.
Tisková pole jsou také dovážena do Aspose.Words jako jejich vlastní speciální třída. The FormField třída představuje pole formuláře v dokumentu Word a poskytuje další metody, které jsou specifické pro formulářové pole.
Podporovaná pole
Výpočet následujících polí je podporován v aktuální verzi Aspose.Words:
- = (formula)
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
(včetně TOP a TOP)USERADDRESS
USERINITIALS
USERNAME
Sofistikovaná analýza pole
Aspose.Words Následuje cestu Microsoft Word zpracovává pole a v důsledku toho správně zpracovává:
- hnízdiště:
IF { =OR({
COMPARE{ =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
- pole argument může být výsledkem hnízdiště
- pole mohou být vnořena do kódu pole i do výsledku pole
- prostory / žádné prostory, uvozovky / žádné uvozovky, únikové znaky v polích atd.:
MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
- pole, která přesahují více odstavců
Vzorová pole
Aspose.Words poskytuje velmi závažné provedení vzorce motoru a podporuje:
- aritmetické a logické operátory:
=(54+4*(6-77)-(5))+(-6-5)/4/5
- funkce:
=ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
- odkazy na záložky:
=IF(C>4, 5,ABS(A)*.76) +3.85
- formátovací spínače:
=00000000 \\\# "$#,##0.00;($#,##0.00)"
Jsou podporovány následující funkce v výrazech: ABS
, AND
, AVERAGE
, COUNT
, DEFINED
, FALSE
, IF
, INT
, MAX
, MIN
, MOD
, NOT
, OR
, PRODUCT
, ROUND
, SIGN
, SUM
, TRUE.
IF
a COMPARE
Pole
Jen některé z IF
výrazy, které Aspose.Words může snadno vypočítat by vám měl dát představu o tom, jak mocná tato vlastnost je:
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
a TIME
Pole
Aspose.Words podporuje všechny přepínače pro formátování dat a času dostupné v Microsoft Word, Některé příklady jsou:
DATE @ "d-MMM-yy"
DATE @ "d/MM/yyyy h:mm am/pm
Mail Merge Pole
Aspose.Words neukládá žádné omezení složitosti Mail Merge pole ve vašich dokumentech a podporuje vnořené IF
a pole vzorce a může dokonce vypočítat název pole sloučení pomocí vzorce.
Některé příklady Mail Merge pole, která Aspose.Words podpora:
- Mail merge přepínače polí:
MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
- vnořená pole sloučení ve vzorci:
IF {
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } True False
- vypočítá název pole sloučení v runtime:
MERGEFIELD {
IF{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- podmíněný přesun na další záznam ve zdroji dat:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 2, -.45) }
Formátové přepínače
Pole v dokumentu může mít formátovací spínače, které stanoví, jak by měla být výsledná hodnota formátována. Aspose.Words podporuje tyto formátové spínače:
- @ @ @ @ info: whatsthis
- Formátování čísel -\\\\* Víčka -\\\* FirstCap -\\\\* Níž -\\\\* Horní -\\\\* CHARFORMAT formát výsledek podle prvního znaku kódu pole -\\\\ * MERGEFORMAT formátu výsledek podle toho, jak je starý výsledek formátován
Date a formátování čísel v polích
Kdy? Aspose.Words vypočítá výsledek pole, často je třeba propojit řetězec s hodnotou čísla nebo data a také jej formátovat zpět do řetězce. Výchozí Aspose.Words využívá současnou kulturu vláken k provedení analýzy a formátování při výpočtu hodnot polí během aktualizace pole a mail merge. Existují také možnosti poskytované v podobě FieldOptions třída, která umožňuje další kontrolu, nad kterou se kultura používá při aktualizaci pole%
- ve výchozím nastavení FieldUpdateCultureSource vlastnost je nastavena na CurrentThread který formátuje pole pomocí současné kultury vláken
- tuto vlastnost lze nastavit na FieldCode takže jazyk nastavený z kódu pole pole je použit pro formátování místo
Formátování pomocí současné kultury vláken
Pro kontrolu kultury použité při výpočtu pole stačí nastavit CurrentCulture vlastnost do kultury dle vašeho výběru před vyvoláním výpočtu pole.
Následující příklad kódu ukazuje, jak změnit kulturu použitou ve formátovacích polích během aktualizace:
PŘÍKLAD (použijte veřejný obal CurrentThreadSettings.getLocale() a nastavitLocale() místo soukromého Thread.CurrentThread
.CurrentCulture)
Použití současné kultury k formátování polí umožňuje systému snadno a důsledně kontrolovat, jak jsou všechna pole v dokumentu formátována během aktualizace pole.
Formátování pomocí kultury v dokumentu
Na druhou stranu, Microsoft Word formátuje každé jednotlivé pole založené na jazyku textu nalezeného v poli (specificky běží od kódu pole). Někdy během aktualizace pole to může být žádoucí chování, například pokud máte globalizované dokumenty obsahující obsah tvořený mnoha různými jazyky a chtěli byste, aby každé pole uctívalo místo použité z textu. Aspose.Words podporuje tuto funkci.
The Document třída FieldOptions vlastnost, která obsahuje členy, které lze použít pro kontrolu toho, jak jsou pole aktualizována v dokumentu.
Následující příklad kódu ukazuje, jak určit, kde kultura použitá pro formátování dat během aktualizace pole a Mail Merge je vybrán z:
PŘÍKLAD