Вставити поля

Є кілька різних способів вставити поля в документ:

У цій статті ми розглянемо кожен спосіб більш детально і аналізуємо, як вставляти певні поля за допомогою цих параметрів.

Введення полів у документ з використанням 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");

Вказати місцевість на рівні поля

English, Українська, Français… З Aspose.Words, Ви можете вказати Locale на рівні поля, використовуючи 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)
  • вкажіть назву виключеної країни/регіону
  • вказати назву та формат адреси
  • вказати ідентифікатор мови, який використовується для форматування адреси

Приклад наступного коду показує, як додати 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 JavaScript licenses API Веб-сайт Go1.13.8

Про нас 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 JavaScript licenses API Веб-сайт Go1.13.8

Про нас 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 JavaScript licenses API Веб-сайт Go1.13.8

Про нас 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 JavaScript licenses API Веб-сайт Go1.13.8

Про нас INCLUDETEXT поле вставляє текст і графіку, що міститься в документі, зазначеному в полі коду. Ви можете вставляти весь документ або частину документа, зазначеного у закладці. Це поле в документі Word представлена INCLUDETEXT. Ви можете використовувати 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 JavaScript licenses API Веб-сайт Go1.13.8

Про нас 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");