Wstaw pola
Istnieje kilka różnych sposobów umieszczania pól w dokumencie:
W tym artykule, będziemy patrzeć na każdy sposób bardziej szczegółowo i przeanalizować, jak umieścić pewne pola przy użyciu tych opcji.
Wstawianie pól do dokumentu przy użyciu DocumentBuilder
W Aspose.Words do InsertField metoda jest używana do wprowadzania nowych pól do dokumentu. Pierwszy parametr akceptuje pełny kod pola, które ma zostać wstawione. Drugi parametr jest opcjonalny i pozwala na ręczne ustawienie wyniku pola. Jeśli to nie jest dostarczone, pole jest automatycznie aktualizowane. Możesz podać null lub pustym do tego parametru, aby umieścić pole o pustej wartości pola. Jeśli nie jesteś pewien konkretnej składni kodu pola, stwórz pole w Microsoft Word pierwszy i przełącz, aby zobaczyć jego kod pola.
Poniższy przykład kodu pokazuje jak wstawić pole scalania do dokumentu używając DocumentBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(InsertField.class); | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.insertField("MERGEFIELD MyFieldName \\* MERGEFORMAT"); | |
doc.save(dataDir + "output.docx"); |
Tę samą technikę stosuje się do umieszczania pól zagnieżdżonych w innych polach.
Poniższy przykład kodu pokazuje jak wstawić pola zagnieżdżone w innym polu używając DocumentBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
for (int i = 0; i < 5; i++) | |
builder.insertBreak(BreakType.PAGE_BREAK); | |
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY); | |
// We want to insert a field like this: | |
// { IF {PAGE} <> {NUMPAGES} "See Next Page" "Last Page" } | |
Field field = builder.insertField("IF "); | |
builder.moveTo(field.getSeparator()); | |
builder.insertField("PAGE"); | |
builder.write(" <> "); | |
builder.insertField("NUMPAGES"); | |
builder.write(" \"See Next Page\" \"Last Page\" "); | |
field.update(); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertNestedFields.docx"); |
Określić położenie na poziomie pola
Identyfikator języka jest standardowym międzynarodowym skrótem numerycznym dla danego języka w kraju lub regionie geograficznym. Z Aspose.Words, możesz określić Locale na poziomie pola za pomocą LocaleId nieruchomość, która pobiera lub ustawia identyfikator lokalizacji pola.
Poniższy przykład kodu pokazuje jak korzystać z tej opcji:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
DocumentBuilder builder = new DocumentBuilder(); | |
Field field = builder.insertField(FieldType.FIELD_DATE, true); | |
field.setLocaleId(1049); | |
builder.getDocument().save(getArtifactsDir() + "WorkingWithFields.SpecifylocaleAtFieldlevel.docx"); |
Wstaw niewpisane / puste pole
Jeśli chcesz wstawić niewpisane / puste pola ({}) just like Microsoft Word pozwala, można użyć InsertField metoda z FieldType.FieldNone parametr. Aby umieścić pole w dokumencie Word, można nacisnąć kombinację klawiszy Ctrl + F9.
Poniższy przykład kodu pokazuje jak umieścić puste pole w dokumencie:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
FieldUnknown field = (FieldUnknown) builder.insertField(FieldType.FIELD_NONE, false); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertFieldNone.docx"); |
Wstaw COMPARE
Pole
W COMPARE
pole porównuje dwie wartości i zwraca wartość liczbową 1, jeśli porównanie jest true lub 0, jeśli porównanie jest false.
Poniższy przykład kodu pokazuje jak dodać COMPARE
pola używające DocumentBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
FieldCompare field = (FieldCompare) builder.insertField(FieldType.FIELD_COMPARE, true); | |
field.setLeftExpression("3"); | |
field.setComparisonOperator("<"); | |
field.setRightExpression("2"); | |
field.update(); | |
builder.writeln(); | |
field = (FieldCompare) builder.insertField(FieldType.FIELD_COMPARE, true); | |
field.setLeftExpression("5"); | |
field.setComparisonOperator("="); | |
field.setRightExpression("2 + 3"); | |
field.update(); | |
doc.updateFields(); | |
doc.save(getArtifactsDir() + "Field.COMPARE.docx"); |
Wstaw IF
Pole
W IF
pole może być użyte do oceny argumentów warunkowo.
Poniższy przykład kodu pokazuje jak dodać IF
pola używające DocumentBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.write("Statement 1: "); | |
FieldIf field = (FieldIf) builder.insertField(FieldType.FIELD_IF, true); | |
field.setLeftExpression("0"); | |
field.setComparisonOperator("="); | |
field.setRightExpression("1"); | |
// The IF field will display a string from either its "TrueText" property, | |
// or its "FalseText" property, depending on the truth of the statement that we have constructed. | |
field.setTrueText("True"); | |
field.setFalseText("False"); | |
field.update(); | |
builder.write("\nStatement 2: "); | |
field = (FieldIf) builder.insertField(FieldType.FIELD_IF, true); | |
field.setLeftExpression("5"); | |
field.setComparisonOperator("="); | |
field.setRightExpression("2 + 3"); | |
field.setTrueText("True"); | |
field.setFalseText("False"); | |
field.update(); | |
doc.updateFields(); | |
doc.save(getArtifactsDir() + "Field.IF.docx"); |
Wstawianie pól do dokumentu przy użyciu FieldBuilder
Alternatywny sposób umieszczania pól w Aspose.Words jest FieldBuilder Klasa. Zapewnia płynny interfejs do określenia przełączników pola i wartości argumentów jako tekst, węzły lub nawet zagnieżdżone pola.
Poniższy przykład kodu pokazuje jak wstawić pole do dokumentu używając FieldBuilder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
FieldBuilder firstName = new FieldBuilder(FieldType.FIELD_MERGE_FIELD); | |
firstName.addArgument("firstname"); | |
FieldBuilder lastName = new FieldBuilder(FieldType.FIELD_MERGE_FIELD); | |
lastName.addArgument("lastname"); | |
FieldArgumentBuilder firstnameArgumentBuilder = new FieldArgumentBuilder(); | |
firstnameArgumentBuilder.addText("Firstname: "); | |
firstnameArgumentBuilder.addField(firstName); | |
FieldArgumentBuilder lastnameArgumentBuilder = new FieldArgumentBuilder(); | |
lastnameArgumentBuilder.addText("Lastname: "); | |
lastnameArgumentBuilder.addField(lastName); | |
// Prepare IF field with two nested MERGEFIELD fields: { IF "left expression" = "right expression" "Firstname: { MERGEFIELD firstname }" "Lastname: { MERGEFIELD lastname }"} | |
FieldBuilder fieldBuilder = new FieldBuilder(FieldType.FIELD_IF); | |
fieldBuilder.addArgument("left expression"); | |
fieldBuilder.addArgument("="); | |
fieldBuilder.addArgument("right expression"); | |
fieldBuilder.addArgument(firstnameArgumentBuilder); | |
fieldBuilder.addArgument(lastnameArgumentBuilder); | |
// Insert IF field in exact location | |
Field field = fieldBuilder.buildAndInsert(doc.getFirstSection().getBody().getFirstParagraph()); | |
field.update(); | |
doc.save(getArtifactsDir() + "Field.InsertFieldUsingFieldBuilder.docx"); |
Wstawianie pól DOM
Można również wprowadzić różne rodzaje pól za pomocą Aspose.Words Document Object Model (DOM). W tej części przyjrzymy się kilku przykładom.
Wstawianie połączenia Pole w dokumencie DOM
MERGEFIELD
pole w dokumencie Word może być reprezentowane przez FieldMergeField Klasa. Możesz użyć FieldMergeField klasa do wykonywania następujących operacji:
- podać nazwę pola połączenia
- określić formatowanie pola połączenia
- określić tekst, który znajduje się pomiędzy separatorem pola a końcem pola pola połączenia
- określić tekst, który ma być wstawiony po polu scalania, jeśli pole nie jest puste
- określić tekst, który ma być wstawiony przed polem połączenia, jeśli pole nie jest puste
Poniższy przykład kodu pokazuje jak dodać MERGE
użycie pola DOM do ustępu w dokumencie:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Paragraph para = (Paragraph) doc.getChildNodes(NodeType.PARAGRAPH, true).get(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.FIELD_MERGE_FIELD, false); | |
// { " MERGEFIELD Test1" } | |
field.setFieldName("Test1"); | |
// { " MERGEFIELD Test1 \\b Test2" } | |
field.setTextBefore("Test2"); | |
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 } | |
field.setTextAfter("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(getArtifactsDir() + "WorkingWithFields.InsertMergeFieldUsingDOM.docx"); |
Wprowadzanie Mail Merge ADDRESSBLOCK
pole w dokumencie DOM
W ADDRESSBLOCK
pole jest używane do wprowadzenia Mail Merge blok adresu w dokumencie Word. ADDRESSBLOCK
pole w dokumencie Word może być reprezentowane przez FieldAddressBlock Klasa. Możesz użyć FieldAddressBlock klasa do wykonywania następujących operacji:
- określić, czy włączyć nazwę kraju / regionu do pola
- określić, czy należy formatować adres w zależności od kraju / regionu odbiorcy w rozumieniu POST * CODE (Universal Postal Union 2006)
- podać wyłączoną nazwę kraju / regionu
- określić format nazwy i adresu
- określić identyfikator języka używany do formatowania adresu
Poniższy przykład kodu pokazuje jak dodać Mail Merge ADDRESSBLOCK
Pole DOM do ustępu w dokumencie:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Paragraph para = (Paragraph) doc.getChildNodes(NodeType.PARAGRAPH, true).get(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.FIELD_ADDRESS_BLOCK, false); | |
// { ADDRESSBLOCK \\c 1" } | |
field.setIncludeCountryOrRegionName("1"); | |
// { ADDRESSBLOCK \\c 1 \\d" } | |
field.setFormatAddressOnCountryOrRegion(true); | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 } | |
field.setExcludedCountryOrRegionName("Test2"); | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 } | |
field.setNameAndAddressFormat("Test3"); | |
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" } | |
field.setLanguageId("Test 4"); | |
field.update(); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertMailMergeAddressBlockFieldUsingDOM.docx"); |
Wprowadzanie ADVANCE
pole do dokumentu bez korzystania z DocumentBuilder
W ADVANCE
pole jest używane do przesunięcia kolejnego tekstu w linii w lewo, prawo, w górę lub w dół. ADVANCE
pole w dokumencie Word może być reprezentowane przez FieldAdvance Klasa. Można użyć FieldAdvance klasa do wykonywania następujących operacji:
- określić liczbę punktów, za pomocą których tekst po polu powinien być przesunięty pionowo od górnej krawędzi strony
- określić liczbę punktów, za pomocą których tekst po polu powinien być przesunięty poziomo od lewej krawędzi kolumny, ramki lub pola tekstowego
- określić liczbę punktów, w których tekst po polu powinien być przesunięty w lewo, w prawo, w górę lub w dół
Poniższy przykład kodu pokazuje jak dodać ADVANCE
Pole DOM do ustępu w dokumencie:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
Paragraph para = (Paragraph) doc.getChildNodes(NodeType.PARAGRAPH, true).get(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.FIELD_ADVANCE, false); | |
// { ADVANCE \\d 10 " } | |
field.setDownOffset("10"); | |
// { ADVANCE \\d 10 \\l 10 } | |
field.setLeftOffset("10"); | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 } | |
field.setRightOffset("-3.3"); | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 } | |
field.setUpOffset("0"); | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 } | |
field.setHorizontalPosition("100"); | |
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 } | |
field.setVerticalPosition("100"); | |
field.update(); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertAdvanceFieldWithOutDocumentBuilder.docx"); |
Wprowadzanie ASK
pole do dokumentu bez korzystania z DocumentBuilder
W ASK
pole służy do wywołania przez użytkownika tekstu przypisania do zakładki w dokumencie Word. ASK
pole w dokumencie Word może być reprezentowane przez FieldAsk Klasa. Możesz użyć FieldAsk klasa do wykonywania następujących operacji:
- podać nazwę zakładki
- określenie domyślnej odpowiedzi użytkownika (wartość początkowa zawarta w oknie “prompt”)
- określić, czy odpowiedź użytkownika powinna być odbierana raz na Mail Merge działanie
- określić tekst (tytuł okna)
Poniższy przykład kodu pokazuje jak dodać ASK
Pole DOM do ustępu w dokumencie:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
Paragraph para = (Paragraph) doc.getChildNodes(NodeType.PARAGRAPH, true).get(0); | |
// We want to insert an Ask field like this: | |
// { ASK \"Test 1\" Test2 \\d Test3 \\o } | |
FieldAsk field = (FieldAsk) para.appendField(FieldType.FIELD_ASK, false); | |
// { ASK \"Test 1\" " } | |
field.setBookmarkName("Test 1"); | |
// { ASK \"Test 1\" Test2 } | |
field.setPromptText("Test2"); | |
// { ASK \"Test 1\" Test2 \\d Test3 } | |
field.setDefaultResponse("Test3"); | |
// { ASK \"Test 1\" Test2 \\d Test3 \\o } | |
field.setPromptOnceOnMailMerge(true); | |
field.update(); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertASKFieldWithOutDocumentBuilder.docx"); |
Wprowadzanie AUTHOR
pole do dokumentu bez korzystania z DocumentBuilder
W AUTHOR
pole służy do określenia nazwy autora dokumentu z Document
nieruchomości. AUTHOR
pole w dokumencie Word może być reprezentowane przez FieldAuthor Klasa. Możesz użyć FieldAuthor klasa do wykonywania następujących operacji:
- podać nazwę autora dokumentu
Poniższy przykład kodu pokazuje jak dodać AUTHOR
Pole DOM do ustępu w dokumencie:
Wprowadzanie INCLUDETEXT
pole do dokumentu bez korzystania z DocumentBuilder
W INCLUDETEXT
pole wprowadza tekst i grafikę zawarte w dokumencie określonym w kodzie pola. Można wstawić cały dokument lub część dokumentu, o którym mowa w zakładce. To pole w dokumencie Word jest reprezentowane przez INCLUDETEXT. Możesz użyć FieldIncludeText klasa do wykonywania następujących operacji:
- podać nazwę dołączonego dokumentu zakładki
- określić lokalizację dokumentu
Poniższy przykład kodu pokazuje jak dodać INCLUDETEXT
użycie pola DOM do ustępu w dokumencie:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
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.FIELD_INCLUDE_TEXT, false); | |
fieldIncludeText.setBookmarkName("bookmark"); | |
fieldIncludeText.setSourceFullName(getMyDir() + "IncludeText.docx"); | |
doc.getFirstSection().getBody().appendChild(para); | |
fieldIncludeText.update(); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertIncludeFieldWithoutDocumentBuilder.docx"); |
Wprowadzanie TOA
pole do dokumentu bez korzystania z DocumentBuilder
W TOA
(* Tabela organów *) pole buduje i umieszcza tabelę organów. W TOA
pole zbiera wpisy oznaczone przez TA
(* Tabela wpisów organów *). Microsoft Office Word wprowadza TOA
pole po kliknięciu * Wstaw tabelę organów * w **Tabela organów** Grupa **References** Tab. Kiedy oglądasz TOA
pole w dokumencie, składnia wygląda tak:
{ TOA
[Switches ] }
Poniższy przykład kodu pokazuje jak dodać TOA
użycie pola DOM do ustępu w dokumencie.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
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.FIELD_TOA_ENTRY, false); | |
fieldTA.setEntryCategory("1"); | |
fieldTA.setLongCitation("Value 0"); | |
doc.getFirstSection().getBody().appendChild(para); | |
para = new Paragraph(doc); | |
FieldToa fieldToa = (FieldToa) para.appendField(FieldType.FIELD_TOA, false); | |
fieldToa.setEntryCategory("1"); | |
doc.getFirstSection().getBody().appendChild(para); | |
fieldToa.update(); | |
doc.save(getArtifactsDir() + "WorkingWithFields.InsertTOAFieldWithoutDocumentBuilder.docx"); |