Вмъкване на полета
Има няколко различни начина за въвеждане на полета в документ:
- използване DocumentBuilder
- използване FieldBuilder
- използване Aspose.Words Document Object Model (DOM)
В тази статия ще разгледаме по-подробно всеки начин и ще анализираме как да вмъкнем определени полета, използвайки тези опции.
Вмъкване на полета в документ с помощта на Documentbuilder
В Aspose.Words на InsertField метод се използва за въвеждане на нови полета в документ. Първият параметър приема да бъде поставен пълният код на полето. Вторият параметър е незадължителен и позволява ръчно да се зададе резултатът от полето. Ако това не е доставено, полето се актуализира автоматично. Можете да преминете null или празно към този параметър, за да въведете поле с празна стойност на полето. Ако не сте сигурни за специфичното поле код синтаксис, създайте полето в Microsoft Word Първо превключи, за да видиш кода на полето.
Следният пример за код показва как да се вмъкне сливащо се поле в документ, като се използва DocumentBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.InsertField(@"MERGEFIELD MyFieldName \* MERGEFORMAT"); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertField.docx"); |
Същата техника се използва и за вмъкване на полета в други полета.
Следният пример за код показва как да се вмъкнат полетата в друго поле, използвайки DocumentBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
for (int i = 0; i < 5; i++) | |
builder.InsertBreak(BreakType.PageBreak); | |
builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary); | |
// We want to insert a field like this: | |
// { IF {PAGE} <> {NUMPAGES} "See Next Page" "Last Page" } | |
Field field = builder.InsertField(@"IF "); | |
builder.MoveTo(field.Separator); | |
builder.InsertField("PAGE"); | |
builder.Write(" <> "); | |
builder.InsertField("NUMPAGES"); | |
builder.Write(" \"See Next Page\" \"Last Page\" "); | |
field.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertNestedFields.docx"); |
Посочете местоположението на нивото на полето
Езиковият идентификатор е стандартно международно цифрово съкращение за езика в държава или географски регион. С Aspose.Words, Можете да посочите Локалното ниво с помощта на LocaleId имот, който получава или определя местоположението на полето.
Следният пример за код показва как да използвате тази опция:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
DocumentBuilder builder = new DocumentBuilder(); | |
Field field = builder.InsertField(FieldType.FieldDate, true); | |
field.LocaleId = 1049; | |
builder.Document.Save(ArtifactsDir + "WorkingWithFields.SpecifylocaleAtFieldlevel.docx"); |
Вмъкване на нетипично/спешно поле
Ако искате да въведете нетипизирани/празни полета ({}) Точно като Microsoft Word позволява, можете да използвате InsertField метод с FieldType.FieldNone параметър. За да вмъкнете поле в Word документ, можете да натиснете Ctrl + F9.
Следният пример за код показва как да се постави празно поле в документа:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
FieldUnknown field = (FieldUnknown) builder.InsertField(FieldType.FieldNone, false); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertFieldNone.docx"); |
Вмъкване на полета в документ с помощта на fieldbuilder
Алтернативен начин за вмъкване на полета в Aspose.Words ен FieldBuilder Клас. Той осигурява перфектен интерфейс за определяне на полеви превключватели и спорни стойности като текст, възли или дори гнездо полета.
Следният пример за код показва как да се въведе поле в документ, като се използва FieldBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
// Prepare IF field with two nested MERGEFIELD fields: { IF "left expression" = "right expression" "Firstname: { MERGEFIELD firstname }" "Lastname: { MERGEFIELD lastname }"} | |
FieldBuilder fieldBuilder = new FieldBuilder(FieldType.FieldIf) | |
.AddArgument("left expression") | |
.AddArgument("=") | |
.AddArgument("right expression") | |
.AddArgument( | |
new FieldArgumentBuilder() | |
.AddText("Firstname: ") | |
.AddField(new FieldBuilder(FieldType.FieldMergeField).AddArgument("firstname"))) | |
.AddArgument( | |
new FieldArgumentBuilder() | |
.AddText("Lastname: ") | |
.AddField(new FieldBuilder(FieldType.FieldMergeField).AddArgument("lastname"))); | |
// Insert IF field in exact location | |
Field field = fieldBuilder.BuildAndInsert(doc.FirstSection.Body.FirstParagraph); | |
field.Update(); | |
doc.Save(ArtifactsDir + "Field.InsertFieldUsingFieldBuilder.docx"); |
Вмъкване на полета DOM
Можете също така да вмъквате различни видове полета, като използвате Aspose.Words Document Object Model (DOM). В този раздел ще разгледаме няколко примера.
Вмъкване на сливане Поле в документ, използващ DOM
На MERGEFIELD
полето в документа на Word може да бъде представено от FieldMergeField Клас. Можеш да използваш FieldMergeField клас за извършване на следните операции:
- посочете името на сливане поле
- посочва форматирането на сливане поле
- посочете текста, който е между разделителя на полето и края на полето за сливане
- посочете текста, който трябва да бъде поставен след сливането на полето, ако полето не е празно
- посочете текста, който трябва да бъде поставен преди сливането на полето, ако полето не е празно
Следният пример с код показва как да добавите MERGE
поле за използване DOM на параграф в документ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0]; | |
builder.MoveTo(para); | |
// We want to insert a merge field like this: | |
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v" } | |
FieldMergeField field = (FieldMergeField) builder.InsertField(FieldType.FieldMergeField, false); | |
// { " MERGEFIELD Test1" } | |
field.FieldName = "Test1"; | |
// { " MERGEFIELD Test1 \\b Test2" } | |
field.TextBefore = "Test2"; | |
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 } | |
field.TextAfter = "Test3"; | |
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m" } | |
field.IsMapped = true; | |
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v" } | |
field.IsVerticalFormatting = true; | |
field.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertMergeFieldUsingDOM.docx"); |
Вмъкване Mail Merge ADDRESSBLOCK
поле в документ, използващ DOM
На ADDRESSBLOCK
поле се използва за вмъкване на Mail Merge адресен блок в Word документ. ADDRESSBLOCK
полето в документа на Word може да бъде представено от FieldAddressBlock Клас. Можеш да използваш FieldAddressBlock клас за извършване на следните операции:
- посочва дали да се включи наименованието на страната/региона в областта
- да се уточни дали да се форматира адресът в съответствие с държавата/региона на получателя, определен от POST*CODE (Универсален пощенски съюз 2006)
- посочете името на страната/региона, изключен
- посочете името и формата на адреса
- посочете езика ID, използван за форматиране на адреса
Следният пример с код показва как да добавите Mail Merge ADDRESSBLOCK
Използване на поле DOM на параграф в документ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0]; | |
builder.MoveTo(para); | |
// We want to insert a mail merge address block like this: | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" } | |
FieldAddressBlock field = (FieldAddressBlock) builder.InsertField(FieldType.FieldAddressBlock, false); | |
// { ADDRESSBLOCK \\c 1" } | |
field.IncludeCountryOrRegionName = "1"; | |
// { ADDRESSBLOCK \\c 1 \\d" } | |
field.FormatAddressOnCountryOrRegion = true; | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 } | |
field.ExcludedCountryOrRegionName = "Test2"; | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 } | |
field.NameAndAddressFormat = "Test3"; | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" } | |
field.LanguageId = "Test 4"; | |
field.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertMailMergeAddressBlockFieldUsingDOM.docx"); |
Вмъкване ADVANCE
поле в документ без използване на DocumentBuilder
На ADVANCE
полето се използва за компенсиране на последващия текст в линия наляво, надясно, нагоре или надолу. На ADVANCE
полето в документа на Word може да бъде представено от FieldAdvance Клас. Можеш да използваш FieldAdvance клас за извършване на следните операции:
- посочете броя на точките, с които текстът, който следва полето трябва да се премества вертикално от горния край на страницата
- посочете броя на точките, с които текстът, който следва полето трябва да се премества хоризонтално от левия край на колоната, рамката или текстовата кутия
- посочете броя на точките, с които текстът, който следва полето, трябва да се премести наляво, надясно, нагоре или надолу
Следният пример с код показва как да добавите ADVANCE
Използване на поле DOM на параграф в документ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0]; | |
// We want to insert an Advance field like this: | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 } | |
FieldAdvance field = (FieldAdvance) para.AppendField(FieldType.FieldAdvance, false); | |
// { ADVANCE \\d 10 " } | |
field.DownOffset = "10"; | |
// { ADVANCE \\d 10 \\l 10 } | |
field.LeftOffset = "10"; | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 } | |
field.RightOffset = "-3.3"; | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 } | |
field.UpOffset = "0"; | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 } | |
field.HorizontalPosition = "100"; | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 } | |
field.VerticalPosition = "100"; | |
field.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertAdvanceFieldWithOutDocumentBuilder.docx"); |
Вмъкване ASK
поле в документ без използване на DocumentBuilder
На ASK
полето се използва, за да накарате потребителя да зададе текст за отметки в Word документ. ASK
полето в документа на Word може да бъде представено от FieldAsk Клас. Можеш да използваш FieldAsk клас за извършване на следните операции:
- посочете името на отметките
- посочете отговора на потребителя по подразбиране (първоначална стойност, съдържаща се в бързия прозорец)
- посочете дали потребителският отговор трябва да се получава веднъж на седмица Mail Merge операция
- да се посочи бърз текст (титуляр на бърз прозорец)
Следният пример с код показва как да добавите ASK
Използване на поле DOM на параграф в документ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0]; | |
// We want to insert an Ask field like this: | |
// { ASK \"Test 1\" Test2 \\d Test3 \\o } | |
FieldAsk field = (FieldAsk) para.AppendField(FieldType.FieldAsk, false); | |
// { ASK \"Test 1\" " } | |
field.BookmarkName = "Test 1"; | |
// { ASK \"Test 1\" Test2 } | |
field.PromptText = "Test2"; | |
// { ASK \"Test 1\" Test2 \\d Test3 } | |
field.DefaultResponse = "Test3"; | |
// { ASK \"Test 1\" Test2 \\d Test3 \\o } | |
field.PromptOnceOnMailMerge = true; | |
field.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertASKFieldWithOutDocumentBuilder.docx"); |
Вмъкване AUTHOR
поле в документ без използване на DocumentBuilder
На AUTHOR
поле се използва за определяне на името на автора на документа от Document
имоти. На AUTHOR
полето в документа на Word може да бъде представено от FieldAuthor Клас. Можеш да използваш FieldAuthor клас за извършване на следните операции:
- посочете името на автора на документа
Следният пример с код показва как да добавите AUTHOR
Използване на поле DOM на параграф в документ:
Вмъкване INCLUDETEXT
поле в документ без използване на DocumentBuilder
На INCLUDETEXT
поле вмъква текста и графиките, съдържащи се в документа, посочен в кода на полето. Можете да поставите целия документ или част от документа, посочен с отметки. Тази област в документ Word е представена от INTEEXT. Можете да използвате FieldIncludeText клас за извършване на следните операции:
- посочете името на отметките на включения документ
- посочете местоположението на документа
Следният пример с код показва как да добавите INCLUDETEXT
поле за използване DOM на параграф в документ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
Paragraph para = new Paragraph(doc); | |
// We want to insert an INCLUDETEXT field like this: | |
// { INCLUDETEXT "file path" } | |
FieldIncludeText fieldIncludeText = (FieldIncludeText) para.AppendField(FieldType.FieldIncludeText, false); | |
fieldIncludeText.BookmarkName = "bookmark"; | |
fieldIncludeText.SourceFullName = MyDir + "IncludeText.docx"; | |
doc.FirstSection.Body.AppendChild(para); | |
fieldIncludeText.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertIncludeFieldWithoutDocumentBuilder.docx"); |
Вмъкване TOA
поле в документ без използване на DocumentBuilder
На TOA
(Таблица на органите) полето изгражда и вмъква таблица от органи. На TOA
поле събира записи, маркирани с TA
(Таблица на Вход на властите) полета. Microsoft Office Word вмъква TOA
поле, когато кликнете * Таблица на органите група на References Сметка. Когато видите TOA
В този документ синтаксисът изглежда така:
{ TOA
[Switches ] }
Следният пример с код показва как да добавите TOA
поле за използване DOM на параграф в документ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
Paragraph para = new Paragraph(doc); | |
// We want to insert TA and TOA fields like this: | |
// { TA \c 1 \l "Value 0" } | |
// { TOA \c 1 } | |
FieldTA fieldTA = (FieldTA) para.AppendField(FieldType.FieldTOAEntry, false); | |
fieldTA.EntryCategory = "1"; | |
fieldTA.LongCitation = "Value 0"; | |
doc.FirstSection.Body.AppendChild(para); | |
para = new Paragraph(doc); | |
FieldToa fieldToa = (FieldToa) para.AppendField(FieldType.FieldTOA, false); | |
fieldToa.EntryCategory = "1"; | |
doc.FirstSection.Body.AppendChild(para); | |
fieldToa.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.InsertTOAFieldWithoutDocumentBuilder.docx"); |