Вмъкване на полета
Има няколко различни начина за вмъкване на полета в документ:
- използване DocumentBuilder
- използване FieldBuilder
- използване Aspose.Words Document Object Model (DOM)
В тази статия ще разгледаме по-подробно всеки начин и ще анализираме как да вмъкнем определени полета, използвайки тези опции.
Вмъкване на полета в документ с помощта на Document Builder
В Aspose.Words на InsertField метод се използва за въвеждане на нови полета в документ. Първият параметър приема да бъде поставен пълният код на полето. Вторият параметър е незадължителен и позволява ръчно да се зададе резултатът от полето. Ако това не е доставено, полето се актуализира автоматично. Можете да преминете нула или празно към този параметър, за да въведете поле с празна стойност на полето. Ако не сте сигурни за конкретния код синтаксис, създайте полето в Microsoft Word Първо превключи, за да видиш кода на полето.
Следният пример за код показва как да се вмъкне поле за сливане в документ, като се използва 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"); |
Същата техника се използва за вмъкване на полета в други полета.
Следният пример за код показва как да вмъкнете полета в друго поле, като използвате 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"); |
Посочване на местоположението на ниво поле
Езиковият идентификатор е стандартно международно цифрово съкращение за езика в държава или географски регион. С Aspose.Words, Можете да посочите Locale на нивото на полето с помощта на LocaleId имот, който получава или определя местоположението на полето.
Следният пример за код показва как да използвате тази опция:
// 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"); |
Вмъкване на нетипично/специфично поле
Ако искате да въведете нетипизирани/празни полета ({}) Точно като 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-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"); |
Вмъкване COMPARE
Поле
На COMPARE
полето сравнява две стойности и връща числовата стойност 1, ако сравнението е true или 0, ако сравнението е false.
Следният пример с код показва как да добавите COMPARE
полета, използващи 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"); |
Вмъкване IF
Поле
На IF
полето може да се използва за оценка на аргументите условно.
Следният пример с код показва как да добавите IF
полета, използващи 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"); |
Вмъкване на полета в документ с помощта на fieldbuilder
Алтернативен начин за вмъкване на полета в Aspose.Words е FieldBuilder Клас. Той осигурява перфектен интерфейс за определяне на полеви превключватели и спорни стойности като текст, възли или дори гнезда полета.
Следният пример за код показва как да се въведе поле в документ, като се използва 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"); |
Вмъкване на полета DOM
Можете също така да вмъквате различни видове полета, използвайки Aspose.Words Document Object Model (DOM). В този раздел ще разгледаме няколко примера.
Вмъкване на сливане Поле в документ, използващ DOM
MERGEFIELD
полето в документа на Word може да бъде представено от FieldMergeField Клас. Можеш да използваш FieldMergeField клас за извършване на следните операции:
- посочете името на полето за сливане
- посочете форматирането на полето за сливане
- посочете текста, който е между разделителя на полето и края на полето на сливането
- посочете текста, който трябва да се вмъкне след сливането, ако полето не е празно
- посочете текста, който ще бъде поставен преди сливането на полето, ако полето не е празно
Следният пример с код показва как да добавите MERGE
поле за използване DOM към параграф в документ:
// 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"); |
Вмъкване 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-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"); |
Вмъкване 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-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"); |
Вмъкване ASK
поле в документ без използване на DocumentBuilder
На ASK
полето се използва за подканване на потребителя за текст за присвояване на отметка в Word документ. ASK
полето в документа на Word може да бъде представено от FieldAsk Клас. Можеш да използваш FieldAsk клас за извършване на следните операции:
- посочете името на отметките
- посочете отговора на потребителя по подразбиране (първоначална стойност, съдържаща се в бързия прозорец)
- посочете дали потребителският отговор трябва да се получи веднъж на a Mail Merge експлоатация
- да се посочи бърз текст (титуляр на бърз прозорец)
Следният пример с код показва как да добавите ASK
Използване на поле DOM към параграф в документ:
// 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"); |
Вмъкване AUTHOR
поле в документ без използване на DocumentBuilder
На AUTHOR
поле се използва за определяне на името на автора на документа от Document
имоти. AUTHOR
полето в документа на Word може да бъде представено от FieldAuthor Клас. Можеш да използваш FieldAuthor клас за извършване на следните операции:
- посочете името на автора на документа
Следният пример с код показва как да добавите AUTHOR
Използване на поле DOM към параграф в документ:
Вмъкване INCLUDETEXT
поле в документ без използване на DocumentBuilder
На INCLUDETEXT
полето вмъква текста и графиките, съдържащи се в документа, посочен в кода на полето. Можете да поставите целия документ или част от документа, посочен с отметки. Тази област в Word документ е представена от ВКЛЮЧИТЕЛНО ЕТЕКСТ. Можеш да използваш FieldIncludeText клас за извършване на следните операции:
- посочете името на отметките на включения документ
- посочете местоположението на документа
Следният пример с код показва как да добавите INCLUDETEXT
поле за използване DOM към параграф в документ:
// 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"); |
Вмъкване TOA
поле в документ без използване на DocumentBuilder
На TOA
(Таблица на органите) полето изгражда и вмъква таблица от органи. На TOA
поле събира записи, маркирани с TA
(Таблица на органите за влизане) полета. 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-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"); |