Вмъкване на полета
Има няколко различни начина за въвеждане на полета в документ:
- използване DocumentBuilder
- използване FieldBuilder
- използване Aspose.Words Document Object Model (DOM)
В тази статия ще разгледаме по-подробно всеки начин и ще анализираме как да вмъкнем определени полета, използвайки тези опции.
Вмъкване на полета в документ с помощта на 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 на параграф в документ:
Вмъкване 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") |