Вмъкване на полета

Има няколко различни начина за въвеждане на полета в документ:

В тази статия ще разгледаме по-подробно всеки начин и ще анализираме как да вмъкнем определени полета, използвайки тези опции.

Вмъкване на полета в документ с помощта на 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 на параграф в документ:

// 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 AUTHOR field like this:
// { AUTHOR Test1 }
FieldAuthor field = (FieldAuthor) para.AppendField(FieldType.FieldAuthor, false);
field.AuthorName = "Test1"; // { AUTHOR Test1 }
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertAuthorField.docx");

Вмъкване 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");