Въведение в полетата

Aspose.Words е библиотека клас, предназначена за обработка от страна на сървъра на Microsoft Word документи и поддържа полета по следните начини:

  • всички полета в документ са запазени по време на отворени/запази и преобразувания
  • възможно е да актуализирате резултатите от повечето полета

В тази статия ще научим повече за полевите структури, подкрепяни в Aspose.Words, и подробности за работата с такива полета.

Структура на полето

Полето се състои от:

  • Първите и разделителните възли на полето се използват за покриване на съдържанието, което съставя кода на полето (обикновено като обикновен текст).
  • Разделител на полето и край на полето обхваща резултата на полето. Това може да бъде съставено от различни видове съдържание, вариращи от редовете на текста до таблиците.
  • Някои полета може да нямат разделител, което означава, че цялото съдържание съставя кода на полето.
  • Кодът на полето определя поведението на полето и се състои от идентификатора на полето и често други параметри като име на полето и превключватели.
  • Резултатът от полето съдържа най-новата оценка на полето. Тази стойност се съхранява в резултата от полето и е това, което се показва на потребителя. Някои полета може да нямат резултат от полетата по този начин няма да покажат нищо в документа. По същия начин някои области все още не могат да бъдат актуализирани, поради което няма да има резултат от това.

fields-aspose-words-java

Съдържанието на кода на полето се съхранява като Run Възел между FieldStart както и FieldSeparator. Резултатът от полето се съхранява между FieldSeparator както и FieldEnd възли и могат да бъдат съставени от различни видове съдържание. Обикновено резултатът от полето съдържа просто текст, съставен от Run възли, обаче е възможно FieldEnd възелът да бъде разположен в напълно различен параграф и по този начин да се направи резултат на полето, състоящ се от Логически нива на възлите в документ като Table както и Paragraph Възлите също.

Ето как се съхранява полето Aspose.Words Чрез използване на …****** пример, който може да се намери на Github.

document-explorer-aspose-words-java

Полета в Aspose.Words Document Object Model (DOM)

Когато е зареден документ Aspose.Words полетата на документа са заредени в Aspose.Words Document Object Model като набор от отделни компоненти (води). Като колекция от FieldStart, FieldSeparator както и FieldEnd Възлите заедно със съдържанието между тези възли. Ако дадено поле няма резултат от поле, тогава ще има не FieldSeparator Възел. Всички тези възли винаги се намират в линия (като деца на Paragraph или SmartTag.

В Aspose.Words всяка от FieldXXX възлите произлизат от FieldChar. Този клас осигурява свойство за проверка на вида на полето, представлявано от посочения възел през FieldType собственост. Например FieldType.FieldMergeField представлява поле за сливане в документа.

Поддържани полета

Изчисляването на следните полета се поддържа в текущата версия на 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 (включително TOT и TOF)
  • 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 както и COMPARE Полета

Само някои от 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 както и TIME Полета

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 { MERGEFIDValue1 } >= {MERGEFID Value2 } True False
  • да изчисли името на сливащото поле по време на изпълнение: MERGEFIELD { Ако{MERGEFIDValue1 } >= {MERGEFID Value2 } FirstName"LastName" }
  • условно преминаване към следващия запис в източника на данни: NEXTIF { MERGEFIDValue1 } <= { =IF(-2.45 >= 6*{MERGEFID Value2 }, 2, -.45) }

Превключване на формат

Поле в документ може да има форматиращи превключватели, които посочват как следва да бъде форматирана получената стойност. Aspose.Words поддържа следните превключватели във формат:

  • Дата и час форматиране
  • \# год -\\\\* Шапки -\\\\* FirstCap -\\\\* По-ниско -\\\\* Горен
  • \\\* CHARMFAT по формат според първия символ на кода на полето
  • \\\* MERGEFORMAT голмайсторски резултат според начина, по който старият резултат е оформен

Date и форматиране на номера в полета

Кога Aspose.Words изчислява резултат на полето, тя често трябва да се съпоставя низ в число или стойност дата, а също и да го форматира обратно към низ. По подразбиране Aspose.Words използва текущата нишка култура за извършване на парсинг и форматиране при изчисляване на стойностите на полето по време на актуализация на полето и mail merge. Има и опции под формата на FieldOptions клас, който позволява по-нататъшен контрол върху коя култура се използва по време на актуализацията на полето%

  • по подразбиране FieldUpdateCultureSource имотът е зададен CurrentThread които форматират полета, използвайки текущата нишка култура
  • този имот може да бъде настроен FieldCode Така че езикът, определен от кода на полето се използва за форматиране вместо

Форматиране с помощта на текущата култура

За да контролирате културата, използвана по време на изчисляване на полето, просто задайте CurrentCulture собственост на култура по ваш избор, преди да се позовава поле изчисление.

Следният пример за код показва как да се промени културата, използвана във форматиращи полета по време на актуализация:

ПРИМЕР (използвайте обществената опаковка ThreadSetts.getLocale() и setLocale() вместо частния Thread.CurrentThread.CurrentCulture)

Използването на текущата култура за форматиране на полета позволява на системата лесно и последователно да контролира как се форматират всички полета в документа по време на актуализация на полето.

Форматиране на използването на културата в документа

От друга страна, Microsoft Word форматира всяко отделно поле, базирано на езика на текста, който се намира в полето (специфично, работи от кода на полето). Понякога по време на обновяване на полето това може да бъде желаното поведение, например ако имате глобализирани документи, съдържащи съдържание, съставено от много различни езици и биха искали всяка област да почита локала, използван от текста. Aspose.Words Също така поддържа тази функционалност.

На Document Класът осигурява FieldOptions собственост, която съдържа членове, които могат да бъдат използвани за контрол как полетата се актуализират в рамките на документа.

Следният пример за код показва как да се определи къде културата, използвана за форматиране на датата по време на актуализацията на полето и Mail Merge е избран от:

ПРИМЕР