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

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

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

Вмъкване на полета в документ с помощта на Documentbuilder

В Aspose.Words на insert_field метод се използва за въвеждане на нови полета в документ. Първият параметър приема да бъде поставен пълният код на полето. Вторият параметър е незадължителен и позволява ръчно да се зададе резултатът от полето. Ако това не е доставено, полето се актуализира автоматично. Можете да преминете null или празно към този параметър, за да въведете поле с празна стойност на полето. Ако не сте сигурни за специфичното поле код синтаксис, създайте полето в Microsoft Word Първо превключи, за да видиш кода на полето.

Следният пример за код показва как да се вмъкне сливащо се поле в документ, като се използва DocumentBuilder:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_field("MERGEFIELD MyFieldName \* MERGEFORMAT")
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_field.docx")

Следният пример с код показва как да се вмъкне поле за сливане с немски локал в документ, използвайки DocumentBuilder:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# Insert content with German locale.
builder.font.locale_id = 1031
builder.insert_field("MERGEFIELD Date1 \\@ \"dddd, d MMMM yyyy\"")
builder.write(" - ")
builder.insert_field("MERGEFIELD Date2 \\@ \"dddd, d MMMM yyyy\"")

Същата техника се използва и за вмъкване на полета в други полета.

Следният пример за код показва как да се вмъкнат полетата в друго поле, използвайки DocumentBuilder:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
for i in range(0, 5) :
builder.insert_break(aw.BreakType.PAGE_BREAK)
builder.move_to_header_footer(aw.HeaderFooterType.FOOTER_PRIMARY)
# We want to insert a field like this:
# IF PAGE <> NUMPAGES "See Next Page" "Last Page"
field = builder.insert_field("IF ")
builder.move_to(field.separator)
builder.insert_field("PAGE")
builder.write(" <> ")
builder.insert_field("NUMPAGES")
builder.write(" \"See Next Page\" \"Last Page\" ")
field.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_nested_fields.docx")

Посочете местоположението на нивото на полето

Езиковият идентификатор е стандартно международно цифрово съкращение за езика в държава или географски регион. С Aspose.Words, Можете да посочите Локално ниво. На locale_id имот получава или определя локален ID на полето.

Следният пример за код показва как да се използва тази опция:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
builder = aw.DocumentBuilder()
field = builder.insert_field(aw.fields.FieldType.FIELD_DATE, True)
field.locale_id = 1049
builder.document.save(docs_base.artifacts_dir + "WorkingWithFields.specifylocale_at_fieldlevel.docx")

Вмъкване на нетипично/спешно поле

Ако искате да въведете нетипизирани/празни полета ({}) Точно като Microsoft Word позволява, можете да използвате insert_field метод с FieldType.FIELD_NONE параметър. За да вмъкнете поле в Word документ, можете да натиснете Ctrl + F9.

Следният пример за код показва как да се постави празно поле в документа:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
field = builder.insert_field(aw.fields.FieldType.FIELD_NONE, False)
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_field_none.docx")

Вмъкване на полета в документ с помощта на fieldbuilder

Алтернативен начин за вмъкване на полета в Aspose.Words ен FieldBuilder Клас. Той осигурява перфектен интерфейс за определяне на полеви превключватели и спорни стойности като текст, възли или дори гнездо полета.

Следният пример за код показва как да се въведе поле в документ, като се използва FieldBuilder:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
# Prepare IF field with two nested MERGEFIELD fields: { IF "left expression" = "right expression" "Firstname: { MERGEFIELD firstname }" "Lastname: { MERGEFIELD lastname }"}
field_builder = aw.fields.FieldBuilder(aw.fields.FieldType.FIELD_IF)
field_builder.add_argument("left expression")
field_builder.add_argument("=")
field_builder.add_argument("right expression")
field_builder.add_argument(
aw.fields.FieldArgumentBuilder()
.add_text("Firstname: ")
.add_field(aw.fields.FieldBuilder(aw.fields.FieldType.FIELD_MERGE_FIELD).add_argument("firstname")))
field_builder.add_argument(
aw.fields.FieldArgumentBuilder()
.add_text("Lastname: ")
.add_field(aw.fields.FieldBuilder(aw.fields.FieldType.FIELD_MERGE_FIELD).add_argument("lastname")))
# Insert IF field in exact location
field = field_builder.build_and_insert(doc.first_section.body.first_paragraph)
field.update()
doc.save(ARTIFACTS_DIR + "Field.insert_field_using_field_builder.docx")

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

Можете също така да вмъквате различни видове полета, като използвате Aspose.Words Document Object Model (DOM). В този раздел ще разгледаме няколко примера.

Вмъкване на сливане Поле в документ, използващ DOM

На MERGEFIELD полето в документа на Word може да бъде представено от FieldMergeField Клас. Можеш да използваш FieldMergeField клас за извършване на следните операции:

  • посочете името на сливане поле
  • посочва форматирането на сливане поле
  • посочете текста, който е между разделителя на полето и края на полето за сливане
  • посочете текста, който трябва да бъде поставен след сливането на полето, ако полето не е празно
  • посочете текста, който трябва да бъде поставен преди сливането на полето, ако полето не е празно

Следният пример с код показва как да добавите a Merge Използване на поле DOM на параграф в документ:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
para = doc.get_child_nodes(aw.NodeType.PARAGRAPH, True)[0].as_paragraph()
builder.move_to(para)
# We want to insert a merge field like this:
# " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v"
field = builder.insert_field(aw.fields.FieldType.FIELD_MERGE_FIELD, False).as_field_merge_field()
# " MERGEFIELD Test1"
field.field_name = "Test1"
# " MERGEFIELD Test1 \\b Test2"
field.text_before = "Test2"
# " MERGEFIELD Test1 \\b Test2 \\f Test3
field.text_after = "Test3"
# " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m"
field.is_mapped = True
# " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v"
field.is_vertical_formatting = True
field.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_merge_field_using_dom.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-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
para = doc.get_child_nodes(aw.NodeType.PARAGRAPH, True)[0].as_paragraph()
builder.move_to(para)
# We want to insert a mail merge address block like this:
# ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\"
field = builder.insert_field(aw.fields.FieldType.FIELD_ADDRESS_BLOCK, False).as_field_address_block()
# ADDRESSBLOCK \\c 1"
field.include_country_or_region_name = "1"
# ADDRESSBLOCK \\c 1 \\d"
field.format_address_on_country_or_region = True
# ADDRESSBLOCK \\c 1 \\d \\e Test2
field.excluded_country_or_region_name = "Test2"
# ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3
field.name_and_address_format = "Test3"
# ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\"
field.language_id = "Test 4"
field.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_mail_merge_address_block_field_using_dom.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-Python-via-.NET
doc = aw.Document()
para = doc.get_child_nodes(aw.NodeType.PARAGRAPH, True)[0].as_paragraph()
# We want to insert an Advance field like this:
# ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100
field = para.append_field(aw.fields.FieldType.FIELD_ADVANCE, False).as_field_advance()
# ADVANCE \\d 10 "
field.down_offset = "10"
# ADVANCE \\d 10 \\l 10
field.left_offset = "10"
# ADVANCE \\d 10 \\l 10 \\r -3.3
field.right_offset = "-3.3"
# ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0
field.up_offset = "0"
# ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100
field.horizontal_position = "100"
# ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100
field.vertical_position = "100"
field.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_advance_field_with_out_document_builder.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-Python-via-.NET
doc = aw.Document()
para = doc.get_child_nodes(aw.NodeType.PARAGRAPH, True)[0].as_paragraph()
# We want to insert an Ask field like this:
# ASK \"Test 1\" Test2 \\d Test3 \\o
field = para.append_field(aw.fields.FieldType.FIELD_ASK, False).as_field_ask()
# ASK \"Test 1\" "
field.bookmark_name = "Test 1"
# ASK \"Test 1\" Test2
field.prompt_text = "Test2"
# ASK \"Test 1\" Test2 \\d Test3
field.default_response = "Test3"
# ASK \"Test 1\" Test2 \\d Test3 \\o
field.prompt_once_on_mail_merge = True
field.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_ask_field_with_out_document_builder.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-Python-via-.NET
doc = aw.Document()
para = doc.get_child_nodes(aw.NodeType.PARAGRAPH, True)[0].as_paragraph()
# We want to insert an AUTHOR field like this:
# AUTHOR Test1
field = para.append_field(aw.fields.FieldType.FIELD_AUTHOR, False).as_field_author()
field.author_name = "Test1" # AUTHOR Test1
field.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_author_field.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-Python-via-.NET
doc = aw.Document()
para = aw.Paragraph(doc)
# We want to insert an INCLUDETEXT field like this:
# INCLUDETEXT "file path"
fieldIncludeText = para.append_field(aw.fields.FieldType.FIELD_INCLUDE_TEXT, False).as_field_include_text()
fieldIncludeText.bookmark_name = "bookmark"
fieldIncludeText.source_full_name = docs_base.my_dir + "IncludeText.docx"
doc.first_section.body.append_child(para)
fieldIncludeText.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_include_field_without_document_builder.docx")

Вмъкване TOA поле в документ без използване на DocumentBuilder

На TOA (Таблица на органите) полето изгражда и вмъква таблица от органи. На TOA поле събира записи, маркирани с TA (Таблица на Вход на властите) полета. Microsoft Office Word вмъква TOA поле, когато кликнете * Таблица на органите група на References Сметка. Когато видите TOA В този документ синтаксисът изглежда така:

{ TOA [Switches ] }

Можеш да използваш FieldToa клас за извършване на операциите с TOA поле.

Следният пример с код показва как да добавите TOA поле за използване DOM на параграф в документ:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
para = aw.Paragraph(doc)
# We want to insert TA and TOA fields like this:
# TA \c 1 \l "Value 0"
# TOA \c 1
fieldTA = para.append_field(aw.fields.FieldType.FIELD_TOAENTRY, False).as_field_ta()
fieldTA.entry_category = "1"
fieldTA.long_citation = "Value 0"
doc.first_section.body.append_child(para)
para = aw.Paragraph(doc)
fieldToa = para.append_field(aw.fields.FieldType.FIELD_TOA, False).as_field_toa()
fieldToa.entry_category = "1"
doc.first_section.body.append_child(para)
fieldToa.update()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.insert_toa_field_without_document_builder.docx")