Alanlara Giriş

Aspose.Words sunucu tarafı işleme için tasarlanmış bir sınıf kütüphanesidir Microsoft Word belgeleri ve alanları aşağıdaki gibi destekler:

  • bir belgedeki tüm alanlar açma/kaydetme ve dönüştürmeler sırasında korunur
  • en çok alanları için sonuçları güncellemek mümkündür

Bu makalede “alan yapısı”, Aspose.Words ‘da desteklenen alanlar ve bu tür alanlarla çalışmanın ayrıntıları hakkında daha fazla bilgi edineceğiz.

Alan Yapısı

Bir alan şu şekilde oluşur:

  • Alan başlangıç ve ayırıcı düğümleri alan kodunu oluşturan içeriği (normalde düz metin olarak) kapsamak için kullanılır.
  • Alan ayırıcı ve alan sonu, alan sonucunu çevreler. Bu çeşitli türlerde içerikten oluşabilir, metinlerden paragraflara ve tablolara kadar. – Bazı alanlar bir ayırıcıya sahip olmayabilir, bu da tüm içeriğin alan kodunu oluşturduğu anlamına gelir.
  • Alan kodu alanı davranışını tanımlar ve alan tanımlayıcısı ve genellikle diğer parametreler gibi alan adı ve anahtarlar içerir.
  • Alan sonucu alanın en son değerlendirmesini içerir. Bu değer alan sonucunda depolanır ve kullanıcıya gösterilen değerdir. Bazı alanlar herhangi bir alan sonucu içermeyebilir bu nedenle belgede hiçbir şey görüntülemezler. Aynı şekilde, bazı alanlar henüz güncellenmemiş olabilir bu nedenle ayrıca herhangi bir alan sonucu olmayabilir.

fields-aspose-words-java

Alan kodunu oluşturan içeriğin Run düğüme sahip olarak depolandığı FieldStart ve FieldSeparator arasında depolandığı. Alan sonucu FieldSeparator ve FieldEnd düğümleri arasında depolanır ve çeşitli türlerde içerikten oluşabilir. Normalde alan sonucu sadece Run düğümlerinden oluşan metin içerir, ancak FieldEnd düğümü tamamen farklı bir paragrafta yer alabilir ve böylece alan sonucunu Table ve Paragraph düğümleri gibi block level nodes tane içeren bileşik bir yapıya dönüştürür.

İşte bir alan nasıl depolanır Aspose.Words “DocumentExplorer” örneği kullanılarak, Github bulunabilir.

document-explorer-aspose-words-java

Alanlar Aspose.Words Document Object Model (DOM)

Bir belge Aspose.Words içine yüklendiğinde, belgenin alanları ayrı bileşenleri (düğümleri) bir kümesi olarak Aspose.Words Document Object Model içine yüklenir. Bir alan tek bir koleksiyon olarak FieldStart, FieldSeparator ve FieldEnd düğümleri ile birlikte bu düğümler arasındaki içeriğin yanında yüklenir. Bir alanın alan sonucu yoksa FieldSeparator düğümü olmayacaktır. Tüm bu düğümler her zaman iç içe ( Paragraph veya SmartTag‘ün çocukları olarak) bulunur.

In Aspose.Words her bir FieldXXX düğümü, FieldChar‘den türecek şekilde tanımlanır. Bu sınıf, belirtilen özelliğin aracılığıyla temsil edilen alanın türünü kontrol etmek için bir özellik sağlar. Örneğin, FieldType alanı FieldType.FieldMergeField belge içindeki birleştirme alanını temsil eder.

Desteklenen alanlar

Aşağıdaki alanlar şu anda mevcut sürümde Aspose.Words’da desteklenmektedir:

  • = (formül)
  • 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 (dahil TOT ve TOF)
  • USERADDRESS
  • USERINITIALS
  • USERNAME

Sophisticated Field Parsing

Aspose.Words Microsoft Word’in alanlarını işleme şeklini takip eder ve sonuç olarak doğru bir şekilde ele alır:

  • iç içe alanlar: IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
  • alan argüman bir iç içe geçmiş alanın sonucudur
  • alanları bir alan kodunda da iç içe olabilir ve de alan sonuçlarında
  • boşluklar/boşluk yok, tırnak işaretleri/tırnak işaretleri yok, alanlardaki kaçış karakterleri vb.": MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
  • birden fazla paragraf üzerinden uzanan alanlar

Formül Alanları

Aspose.Words formül motorunun çok ciddi bir uygulamasıdır ve şu özellikleri destekler:

  • aritmetik ve mantıksal operatörler: =(54+4*(6-77)-(5))+(-6-5)/4/5
  • işlevler: =ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
  • yer imlerine referanslar: =IF(C>4, 5,ABS(A)*.76) +3.85
  • sayı biçimlendirme anahtarları: =00000000 \\\# "$#,##0.00;($#,##0.00)"

Aşağıdaki ifadelerde işlevler şunlardır: ABS, AND, AVERAGE, COUNT, DEFINED, FALSE, IF, INT, MAX, MIN, MOD, NOT, OR, PRODUCT, ROUND, SIGN, SUM, TRUE.

IF ve COMPARE Alanlar

Yalnızca IF ifadelerin Aspose.Words’in kolaylıkla hesaplayabileceği bazı örnekleri size bu özelliğin ne kadar güçlü olduğunu fikir vermeli:

  • 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 ve TIME Alanlar

Aspose.Words tüm tarih ve saat biçimlendirme anahtarları Microsoft Word’te mevcut olanların tamamını destekler, bazı örnekler şunlardır:

  • DATE @ "d-MMM-yy"
  • DATE @ "d/MM/yyyy h:mm am/pm

Mail Merge alan(lar)

Aspose.Words belgenizdeki mail merge alanlarının karmaşıklığı üzerinde hiçbir sınır koymaz ve iç içe geçmiş IF ve formül alanları destekler ve hatta bir formül kullanarak birleştirme alanı adını hesaplayabilir.

Aşağıda mail merge alanlarının bazı örnekleri Aspose.Words destekler:

  • Mail merge alan anahtarları: MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
  • formüldeki iç içe geçmiş birleştirme alanları: IF { MERGEFIELDValue1 } >= {MERGEFIELD Value2 } True False
  • çalışma zamanında birleştirme alanının adını hesapla: MERGEFIELD { IF{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • veri kaynağındaki bir sonraki kayda koşullu hareket: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 2, -.45) }

Biçim Anahtarlamaları

Bir belge içindeki bir alan sonuç elde değerinin nasıl biçimlendirileceğini belirten biçimler anahtarlarına sahip olabilir. Aspose.Words aşağıdaki biçimlendirme anahtarlarını destekler:

  • @ – tarih ve saat formatlama
  • ## – sayı biçimlendirme
  • \\\\* Caps
  • \\\\* İlkKafes
  • \\\\* Alt -\\\\* Üst
  • \\\\* CHARFORMAT – alan kodunun ilk karakteri doğrultusunda sonucu biçimlendirir
  • \\\* MERGEFORMAT – eski sonuç nasıl biçimlendirilmişse buna göre sonucu biçimlendirin

Date ve Alanlarda Sayı Biçimlendirme

Bir alan sonucunu hesaplarken bir Aspose.Words genellikle bir dizeyi bir sayı veya tarih değerine dönüştürmek ve ayrıca onu tekrar bir dizeye biçimlendirmek için ihtiyaç duyar. Varsayılan olarak Aspose.Words alan güncelleme sırasında ve mail merge alan değerlerini hesaplarken geçerli iş parçacığı kültürünü kullanarak ayrıştırma ve biçimlendirme gerçekleştirir. Ayrıca FieldOptions sınıfı kullanılarak, hangi kültürün kullanıldığına ilişkin daha fazla kontrol sağlanır

varsayılan olarak FieldUpdateCultureSource özelliği şu anda kullanılan iş parçacığı kültürü ile alanları biçimlendirerek CurrentThread‘e ayarlanır Bu özellik FieldCode‘e ayarlanabilir böylece alanın alan kodundan alınan dil, biçimlendirme için kullanılır

Geçerli İş Parçacığı Kültürünü Kullanarak Biçimlendirme Yapmak

Alan hesaplama sırasında kullanılan kültürü kontrol etmek için, önce alan hesaplama işlevini çağırmadan önce CurrentCulture özelliğini istediğiniz kültürde ayarlayın.

Aşağıdaki kod örneği, güncelleme sırasında kullanılan kültürü nasıl değiştireceğinizi gösterir:

Örnek (özel Thread.CurrentThread.CurrentCulture yerine kamu CurrentThreadSettings.getLocale() ve setLocale() kullanın)

Geçerli kültürü alanları biçimlendirmek için kullanmak, bir sistemin tüm belge alanlarının nasıl biçimlendirileceğini güncelleme sırasında kolayca ve tutarlı bir şekilde kontrol etmesini sağlar.

Biçimlendirme, Belge’deki Kültür Kullanarak

Öte yandan, Microsoft Word her bir alanı tek başına metin alanındaki dil temelinde biçimlendirir (özellikle alan kodundan gelen dizeler). Bazen bu davranış istenen şey olabilir, örneğin küresel belgeleriniz birden çok farklı dil içeren içerik içerse ve alanları yerel kullanılan metinle onurlandırmak istediğinizde. Ayrıca Aspose.Words bu işlevselliği de destekler.

Sınıf, Document, bir FieldOptions özelliği sağlar, bu üyeler bir belge içinde alanlar nasıl güncellenir kontrol etmek için kullanılabilir.

Aşağıdaki kod örneği, alan güncelleme sırasında tarih biçimlendirmesi için kullanılan kültürü belirtmek ve mail merge seçmek için nasıl kullanılacağını göstermektedir:

ORNEK