Wstaw pola
Istnieje kilka różnych sposobów wstawiania pól do dokumentu:
- za pomocą DocumentBuilder
- za pomocą FieldBuilder
- za pomocą Aspose.Words Document Object Model (DOM)
W tym artykule przyjrzymy się każdemu sposobowi bardziej szczegółowo i przeanalizujemy, jak wstawić określone pola za pomocą tych opcji.
Wstawianie pól do dokumentu przy użyciu narzędzia DocumentBuilder
W Aspose.Words metoda insert_field służy do wstawiania nowych pól do dokumentu. Pierwszy parametr akceptuje pełny kod pola, które ma zostać wstawione. Drugi parametr jest opcjonalny i umożliwia ręczne ustawienie wyniku pola. Jeśli nie zostanie to podane, pole zostanie automatycznie zaktualizowane. Do tego parametru można przekazać wartość null lub pusty, aby wstawić pole z wartością pustego pola. Jeśli nie masz pewności co do składni konkretnego kodu pola, utwórz najpierw pole w formacie Microsoft Word i przełącz się, aby zobaczyć jego kod pola.
Poniższy przykład kodu pokazuje, jak wstawić pole scalania do dokumentu przy użyciu 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") |
Poniższy przykład kodu pokazuje, jak wstawić pole scalania z niemieckimi ustawieniami regionalnymi do dokumentu przy użyciu 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\"") |
Tę samą technikę stosuje się do wstawiania pól zagnieżdżonych w innych polach.
Poniższy przykład kodu pokazuje, jak wstawić pola zagnieżdżone w innym polu za pomocą 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") |
Określ ustawienia regionalne na poziomie pola
Identyfikator języka to standardowy międzynarodowy skrót numeryczny języka danego kraju lub regionu geograficznego. Dzięki Aspose.Words możesz określić ustawienia regionalne na poziomie pola. Właściwość locale_id pobiera lub ustawia identyfikator ustawień regionalnych pola.
Poniższy przykład kodu pokazuje, jak skorzystać z tej opcji:
# 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") |
Wstaw niewpisane/puste pole
Jeśli chcesz wstawić niewpisane/puste pola ({}), tak jak pozwala na to Microsoft Word, możesz użyć metody insert_field z parametrem FieldType.FIELD_NONE. Aby wstawić pole do dokumentu Word, możesz nacisnąć kombinację klawiszy “Ctrl + F9”.
Poniższy przykład kodu pokazuje, jak wstawić puste pole do dokumentu:
# 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") |
Wstawianie pól do dokumentu za pomocą FieldBuilder
Alternatywnym sposobem wstawiania pól w Aspose.Words jest klasa FieldBuilder. Zapewnia płynny interfejs do określania przełączników pól i wartości argumentów jako tekstu, węzłów, a nawet pól zagnieżdżonych.
Poniższy przykład kodu pokazuje, jak wstawić pole do dokumentu za pomocą 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") |
Wstawianie pól za pomocą DOM
Za pomocą Aspose.Words Document Object Model (DOM) możesz także wstawiać różne typy pól. W tej sekcji przyjrzymy się kilku przykładom.
Wstawianie pola scalania do dokumentu za pomocą DOM
Pole MERGEFIELD
w dokumencie Word może być reprezentowane przez klasę FieldMergeField. Klasę FieldMergeField można wykorzystać do wykonania następujących operacji:
- określ nazwę pola scalania
- określ formatowanie pola scalania
- określ tekst znajdujący się pomiędzy separatorem pola a końcem pola scalającego
- określ tekst, który ma zostać wstawiony po polu scalającym, jeśli pole nie jest puste
- określ tekst, który ma zostać wstawiony przed polem scalania, jeśli pole nie jest puste
Poniższy przykład kodu pokazuje, jak dodać pole Merge
za pomocą formatu DOM do akapitu w dokumencie:
# 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") |
Wstawianie pola Mail Merge ADDRESSBLOCK
do dokumentu przy użyciu formatu DOM
Pole ADDRESSBLOCK
służy do wstawienia bloku adresu Mail Merge do dokumentu Word. Pole ADDRESSBLOCK
w dokumencie Word może być reprezentowane przez klasę FieldAddressBlock. Za pomocą klasy FieldAddressBlock można wykonać następujące operacje:
- określ, czy w polu ma być zawarta nazwa kraju/regionu
- określ, czy adres ma być formatowany zgodnie z krajem/regionem odbiorcy zgodnie z definicją POST*CODE (Powszechny Związek Pocztowy 2006)
- podaj nazwę wykluczonego kraju/regionu
- określ format nazwy i adresu
- określ identyfikator języka używany do formatowania adresu
Poniższy przykład kodu pokazuje, jak dodać pole Mail Merge ADDRESSBLOCK
przy użyciu formatu DOM do akapitu w dokumencie:
# 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") |
Wstawianie pola ADVANCE
do dokumentu bez użycia narzędzia DocumentBuilder
Pole ADVANCE
służy do przesuwania kolejnego tekstu w wierszu w lewo, w prawo, w górę lub w dół. Pole ADVANCE
w dokumencie Word może być reprezentowane przez klasę FieldAdvance. Klasę FieldAdvance można wykorzystać do wykonania następujących operacji:
- określ liczbę punktów, o jaką tekst następujący po polu powinien zostać odsunięty w pionie od górnej krawędzi strony
- określić liczbę punktów, o jaką tekst następujący za polem powinien zostać przesunięty poziomo od lewej krawędzi kolumny, ramki lub pola tekstowego
- określ liczbę punktów, o jaką tekst następujący po polu ma zostać przesunięty w lewo, w prawo, w górę lub w dół
Poniższy przykład kodu pokazuje, jak dodać pole ADVANCE
przy użyciu formatu DOM do akapitu w dokumencie.
# 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") |
Wstawianie pola ASK
do dokumentu bez użycia narzędzia DocumentBuilder
Pole ASK
służy do monitowania użytkownika o tekst do przypisania do zakładki w dokumencie programu Word. Pole ASK
w dokumencie Word może być reprezentowane przez klasę FieldAsk. Klasę FieldAsk można wykorzystać do wykonania następujących operacji:
- podaj nazwę zakładki
- określ domyślną reakcję użytkownika (wartość początkowa zawarta w oknie zachęty)
- określ, czy odpowiedź użytkownika powinna być odbierana raz na operację mail merge
- określ tekst zachęty (tytuł okna podpowiedzi)
Poniższy przykład kodu pokazuje, jak dodać pole ASK
za pomocą formatu DOM do akapitu w dokumencie:
# 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") |
Wstawianie pola AUTHOR
do dokumentu bez użycia narzędzia DocumentBuilder
Pole AUTHOR
służy do podania nazwiska autora Dokumentu na podstawie właściwości Document
. Pole AUTHOR
w dokumencie Word może być reprezentowane przez klasę FieldAuthor. Za pomocą klasy FieldAuthor możesz wykonać następujące operacje:
- podać nazwisko autora dokumentu
Poniższy przykład kodu pokazuje, jak dodać pole AUTHOR
za pomocą formatu DOM do akapitu w dokumencie:
Wstawianie pola INCLUDETEXT
do dokumentu bez użycia narzędzia DocumentBuilder
Pole INCLUDETEXT
wstawia tekst i grafikę zawartą w dokumencie nazwanym w kodzie pola. Można wstawić cały dokument lub jego część, do której odnosi się zakładka. To pole w dokumencie Word jest reprezentowane przez INCLUDETEXT. Klasę FieldIncludeText można wykorzystać do wykonania następujących operacji:
- podaj nazwę zakładki dołączanego dokumentu
- określ lokalizację dokumentu
Poniższy przykład kodu pokazuje, jak dodać pole INCLUDETEXT
za pomocą formatu DOM do akapitu w dokumencie:
# 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") |
Wstawianie pola TOA
do dokumentu bez użycia narzędzia DocumentBuilder
Pole TOA
(Tabela źródeł) tworzy i wstawia tabelę źródeł. Pole TOA
gromadzi wpisy oznaczone polami TA
(Table of Authorities Entry). Microsoft Office Word wstawia pole TOA
po kliknięciu Wstaw tabelę źródeł w grupie Tabela władz na karcie References. Gdy przeglądasz pole TOA
w swoim dokumencie, składnia wygląda następująco:
{ TOA
[Switches ] }
Do wykonywania operacji na polu TOA
można użyć klasy FieldToa.
Poniższy przykład kodu pokazuje, jak dodać pole TOA
za pomocą formatu DOM do akapitu w dokumencie:
# 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") |