Вставить поля
Существует несколько способов вставить поля в документ:
- использовать DocumentBuilder
- использовать FieldBuilder
- использовать Aspose.Words Document Object Model (DOM)
В этой статье мы рассмотрим каждый способ более подробно и проанализируем, как вставить определенные поля, используя эти параметры.
Вставка полей в документ с помощью DocumentBuilder
В Aspose.Words тот InsertField Метод используется для вставки новых полей в документ. Первый параметр принимает полный код поля, подлежащего вставке. Второй параметр является необязательным и позволяет задавать результат поля вручную. Если это не предусмотрено, то поле обновляется автоматически. Вы можете передать нуль или пустой к этому параметру, чтобы вставить поле с пустым значением поля. Если вы не уверены в конкретном синтаксисе кода поля, создайте поле в 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, Вы можете указать 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
The 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
The ADDRESSBLOCK
поле используется для вставки Mail Merge Блок адресов в документе Word. ADDRESSBLOCK
поле в документе Word может быть представлено FieldAddressBlock класс. Вы можете использовать FieldAddressBlock класс для выполнения следующих операций:
- указать, следует ли включать название страны/региона в поле;
- указать, форматировать ли адрес в соответствии со страной/регионом получателя, как определено POST*CODE (Universal Postal Union 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
полей в Документ без использования DocumentBuilder
The ADVANCE
Поле используется для смещения последующего текста в строке слева, справа, вверх или вниз. The 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
The 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
The AUTHOR
поле используется для указания имени автора документа из Document
свойств. The AUTHOR
поле в документе Word может быть представлено FieldAuthor класс. Вы можете использовать FieldAuthor класс для выполнения следующих операций:
- указать имя автора документа
Следующий пример кода показывает, как добавить AUTHOR
Полевое использование DOM к пункту в документе:
Вставка INCLUDETEXT
полей в Документ без использования DocumentBuilder
The 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
полей в Документ без использования DocumentBuilder
The TOA
(* Таблица полномочий*) поле строит и вставляет таблицу полномочий. The TOA
поле собирает записи, отмеченные TA
(*Table of Authorities Entry*) поля. 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"); |