Преглед На Полетата
Aspose.Words е класова библиотека, предназначена за обработка от страна на сървъра на документи Microsoft Word и поддържа полета по следните начини::
- всички полета в документа се запазват по време на отваряне/записване и реализации
- възможно е да се актуализират резултатите от повечето полета
В тази статия ще научим повече за структурата на полето, поддържаните полета в Aspose.Words и подробности за работата с такива полета.
Структура На Полетата
Полето се състои от:
- Възлите начало на поле и разделител се използват, за да обхванат Съдържанието, което съставлява кода на полето (обикновено като обикновен текст).
- Разделителят на полето и краят на полето обхващат резултата от полето. Това може да се състои от различни видове съдържание, вариращи от редове от текст до параграфи до таблици.
- Някои полета може да нямат разделител, което означава, че цялото съдържание съставлява кода на полето.
- Кодът на полето определя поведението на полето и се състои от идентификатора на полето и често други параметри като имена на полета и превключватели.
- Резултатът от полето съдържа най-новата оценка на полето. Тази стойност се съхранява в резултата от полето и е това, което се показва на потребителя. Някои полета може да нямат резултати от полета, така че няма да се показва нищо в документа. По същия начин някои полета може да не са актуализирани все още, поради което също няма да имат резултат от полета.
Съдържанието, което съставлява кода на полето, се съхранява като Run възли между FieldStart и FieldSeparator. Резултатът от полето се съхранява между възлите FieldSeparator и FieldEnd и може да бъде съставен от различни видове съдържание. Обикновено резултатът от полето съдържа само текст, съставен от Run възли, но е възможно възелът FieldEnd да бъде разположен в съвсем различен абзац и по този начин резултатът от полето да се състои от възли на блоково ниво също като Table и Paragraph възли.
Ето изглед на това как едно поле се съхранява в Aspose.Words, като се използва примерът " DocumentExplorer".
Полетата в обектния модел на документа Aspose.Words (DOM)
Когато даден документ се зарежда в Aspose.Words, полетата на документа се зареждат в Aspose.Words Документ Обектен Модел като набор от отделни компоненти (възли). Едно поле се зарежда като колекция от възли FieldStart, FieldSeparator и FieldEnd заедно със съдържанието между тези възли. Ако едно поле няма резултат от поле, тогава няма да има FieldSeparator възел. Всички тези възли винаги се намират вградени (като деца на Paragraph или SmartTag).
Във Aspose.Words всеки от FieldXXX възлите произлиза от FieldChar. Този клас предоставя свойство за проверка на типа на полето, представлявано от посочения възел чрез свойството FieldType. Например FieldType.FieldMergeField представлява поле за обединяване в документа.
Има някои специфични полета, които съществуват в документ Word, които не са импортирани в Aspose.Words като колекция от FieldXXX възли. Например полето LINK
и полето INCLUDEPICTURE
се импортират в Aspose.Words като Shape
обект. Този обект предоставя свойства за работа с данните от изображението, които обикновено се съхраняват в тези полета. За да импортирате INCLUDEPICTURE
поле като FieldXXX възли, опцията PreserveIncludePictureField трябва да бъде посочена като true.
Полетата на формуляр също се импортират в Aspose.Words като свой собствен специален клас. Класът FormField представлява поле на формуляр в документ Word и предоставя допълнителни методи, които са специфични за поле на формуляр.
Поддържани Полета
Изчисляването на следните полета се поддържа в текущата версия на Aspose.Words:
- = (формула)
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
Софистициран Полеви Анализ
Aspose.Words следва пътя Microsoft Word обработва полетата и в резултат на това правилно обработва:
- вложени полета:
IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
- поле аргумент може да бъде резултат от вложено поле
- полетата могат да бъдат вложени в код на поле, както и в резултата от полето
- интервали/без интервали,кавички / без кавички, знаци за бягство в полета и т.н.:
MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
- полета, които обхващат няколко параграфа
Формула Полета
Aspose.Words осигурява много сериозно изпълнение на двигателя формула и поддържа следното:
- аритметични и логически оператори:
=(54+4*(6-77)-(5))+(-6-5)/4/5
- функции:
=ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
- препратки към отметки:
=IF(C>4, 5,ABS(A)*.76) +3.85
- превключватели за форматиране на числа:
=00000000 \\\# "$#,##0.00;($#,##0.00)"
Следните функции в изрази се поддържат: ABS
, AND
, AVERAGE
, COUNT
, DEFINED
, FALSE
, IF
, INT
, MAX
, MIN
, MOD
, NOT
, OR
, PRODUCT
, ROUND
, SIGN
, SUM
, TRUE.
IF
and COMPARE
Fields
Само някои от IF
изрази, които Aspose.Words лесно могат да се изчислят, трябва да Ви дадат представа колко мощна е тази функция.:
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 поддържа всички превключватели за форматиране на дата и час, Налични в Microsoft Word, някои примери са:
DATE @ "d-MMM-yy"
DATE @ "d/MM/yyyy h:mm am/pm
Mail Merge полета
Aspose.Words не налага ограничение за сложността на полетата Mail Merge във вашите документи и поддържа вложени полета IF
и формула и дори може да изчисли името на полето за обединяване с помощта на Формула.
Някои примери за Mail Merge полета, които Aspose.Words поддържа:
- Mail merge превключватели на полета:
MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
- вложени полета за обединяване във Формула:
IF {
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } True False
- изчисляване на името на полето за обединяване по време на изпълнение:
MERGEFIELD {
IF{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- условно преминаване към следващия запис в източника на данни:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 2, -.45) }
Формат Превключватели
Поле в документ може да има превключватели за форматиране, които указват как трябва да се форматира получената стойност. Aspose.Words поддържа следните формати превключватели:
- @ – форматиране на дата и час
- \# - форматиране на номера
- \\\\* Caps
- \\\\* FirstCap
- \\\\* Lower
- \\\\* Upper
- \\\\* CHARFORMAT - форматиране на резултата според първия знак на кода на полето
- \\\\* MERGEFORMAT - форматиране на резултата според форматирането на стария резултат
Форматиране на дата и номер в полета
Когато Aspose.Words изчислява резултат от поле, той често трябва да анализира низ в стойност на число или дата, а също и да го форматира обратно в string.By по подразбиране Aspose.Words използва текущата култура на нишката, за да извърши анализ и форматиране при изчисляване на стойностите на полетата по време на актуализацията на полето и mail merge. Има и опции, предоставени под формата на клас FieldOptions, който позволява по-нататъшен контрол върху това коя култура се използва по време на актуализацията на полето.
- по подразбиране свойството FieldUpdateCultureSource е зададено на CurrentThread, който форматира полета, използвайки текущата култура на нишката
- това свойство може да бъде настроено на FieldCode, така че езикът, зададен от кода на полето, да се използва вместо форматиране
Форматиране с помощта на културата на текущата нишка
За да контролирате културата, използвана по време на изчислението на полето, просто Задайте свойството CurrentCulture на култура по ваш избор, преди да извикате изчисление на полето.
Следващият пример за код показва как да промените културата, използвана в полетата за форматиране по време на актуализацията:
EXAMPLE
Използването на текущата култура за форматиране на полета позволява на системата лесно и последователно да контролира как всички полета в документа се форматират по време на актуализацията на полета.
Форматиране с помощта на културата в документа
От друга страна Microsoft Word форматира всяко отделно поле въз основа на езика на текста, който се намира в полето (по-специално, изпълнява се от кода на полето). Понякога по време на актуализацията на полета това може да е желаното поведение, например ако имате глобализирани документи, съдържащи съдържание, съставено от много различни езици и бихте искали всяко поле да отговаря на езиковата променлива, използвана от текста. Aspose.Words също поддържа тази функционалност.
Клас Document предоставя свойство FieldOptions, което съдържа членове, които могат да се използват за контролиране на актуализирането на полетата в документа.
Следващият пример за код показва как да укажете къде се избира културата, използвана за форматиране на дата по време на актуализацията на полето и Mail Merge:
EXAMPLE