필드 삽입

문서에 필드를 삽입하는 방법은 여러 가지가 있습니다:

이 기사에서는 각 방법을 더 자세히 살펴보고 이러한 옵션을 사용하여 특정 필드를 삽입하는 방법을 분석합니다.

다음을 사용하여 문서에 필드 삽입 DocumentBuilder

그 안에 Aspose.Words 그 InsertField 메서드는 문서에 새 필드를 삽입하는 데 사용됩니다. 첫 번째 매개 변수는 삽입할 필드의 전체 필드 코드를 허용합니다. 두 번째 매개 변수는 선택 사항이며 필드의 필드 결과를 수동으로 설정할 수 있습니다. 이 항목이 제공되지 않으면 필드가 자동으로 업데이트됩니다. 이 매개 변수에 널 또는 빈 필드를 전달하여 빈 필드 값이 있는 필드를 삽입할 수 있습니다. 특정 필드 코드 구문에 대해 잘 모르는 경우 필드를 만듭니다 Microsoft Word 먼저 그 필드 코드를 볼 수 전환합니다.

다음 코드 예제에서는 다음을 사용하여 병합 필드를 문서에 삽입하는 방법을 보여 줍니다 DocumentBuilder:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->InsertField(u"MERGEFIELD MyFieldName \\* MERGEFORMAT");
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertField.docx");

동일한 기술을 사용하여 다른 필드 내에 중첩된 필드를 삽입합니다.

다음 코드 예제에서는 다음을 사용하여 다른 필드 내에 중첩된 필드를 삽입하는 방법을 보여 줍니다 DocumentBuilder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
// Insert a few page breaks (just for testing)
for (int i = 0; i < 5; i++)
{
builder->InsertBreak(BreakType::PageBreak);
}
// Move the DocumentBuilder cursor into the primary footer.
builder->MoveToHeaderFooter(HeaderFooterType::FooterPrimary);
// We want to insert a field like this:
// { IF {PAGE} <> {NUMPAGES} "See Next Page" "Last Page" }
System::SharedPtr<Field> field = builder->InsertField(u"IF ");
builder->MoveTo(field->get_Separator());
builder->InsertField(u"PAGE");
builder->Write(u" <> ");
builder->InsertField(u"NUMPAGES");
builder->Write(u" \"See Next Page\" \"Last Page\" ");
field->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertNestedFields.docx");

필드 수준에서 로캘 지정

언어 식별자는 국가 또는 지리적 지역의 언어에 대한 표준 국제 숫자 약어입니다. 함께 Aspose.Words,다음을 사용하여 필드 수준에서 로캘을 지정할 수 있습니다 LocaleId 필드 로캘을 가져오거나 설정하는 속성 ID.

다음 코드 예제에서는 이 옵션을 사용하는 방법을 보여 줍니다:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto builder = MakeObject<DocumentBuilder>();
SharedPtr<Field> field = builder->InsertField(FieldType::FieldDate, true);
field->set_LocaleId(1049);
builder->get_Document()->Save(ArtifactsDir + u"WorkingWithFields.SpecifylocaleAtFieldlevel.docx");

유형 지정되지 않은/빈 필드 삽입

형식이 지정되지 않은/빈 필드({})를 삽입하려는 경우 Microsoft Word 허용,당신은 사용할 수 있습니다 InsertField 와 방법 FieldType.FieldNone 매개 변수 워드 문서에 필드를 삽입하려면"클릭+ F9"키 조합.

다음 코드 예제에서는 문서에 빈 필드를 삽입하는 방법을 보여 줍니다:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
auto field = System::DynamicCast<FieldUnknown>(builder->InsertField(FieldType::FieldNone, false));
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertFieldNone.docx");

다음을 사용하여 문서에 필드 삽입 FieldBuilder

필드를 삽입하는 다른 방법 Aspose.Words 이 FieldBuilder 수업 필드 스위치 및 인수 값을 텍스트,노드 또는 중첩 필드로 지정하는 유창한 인터페이스를 제공합니다.

다음 코드 예제에서는 다음을 사용하여 문서에 필드를 삽입하는 방법을 보여 줍니다 FieldBuilder:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto firstName = MakeObject<FieldBuilder>(FieldType::FieldMergeField);
firstName->AddArgument("firstname");
auto lastName = MakeObject<FieldBuilder>(FieldType::FieldMergeField);
lastName->AddArgument("lastname");
auto firstnameArgumentBuilder = MakeObject<FieldArgumentBuilder>();
firstnameArgumentBuilder->AddText(u"Firstname: ");
firstnameArgumentBuilder->AddField(firstName);
auto lastnameArgumentBuilder = MakeObject<FieldArgumentBuilder>();
lastnameArgumentBuilder->AddText(u"Lastname: ");
lastnameArgumentBuilder->AddField(lastName);
// Prepare IF field with two nested MERGEFIELD fields: { IF "left expression" = "right expression" "Firstname: { MERGEFIELD firstname }" "Lastname: { MERGEFIELD lastname }"}
auto fieldBuilder = MakeObject<FieldBuilder>(FieldType::FieldIf);
fieldBuilder->AddArgument(u"left expression");
fieldBuilder->AddArgument(u"=");
fieldBuilder->AddArgument(u"right expression");
fieldBuilder->AddArgument(firstnameArgumentBuilder);
fieldBuilder->AddArgument(lastnameArgumentBuilder);
auto field = fieldBuilder->BuildAndInsert(doc->get_FirstSection()->get_Body()->AppendParagraph(String::Empty));
field->Update();
doc->Save(ArtifactsDir + u"Field.InsertFieldUsingFieldBuilder.docx");

다음을 사용하여 필드 삽입 DOM

다음을 사용하여 다양한 유형의 필드를 삽입할 수도 있습니다 Aspose.Words 문서 개체 모델(DOM). 이 섹션에서는 몇 가지 예를 살펴 보겠습니다.

다음을 사용하여 병합 필드를 문서에 삽입 DOM

MERGEFIELD 워드 문서의 필드는 FieldMergeField 수업 당신은 사용할 수 있습니다 FieldMergeField 다음 작업을 수행하는 클래스:

  • 병합 필드의 이름을 지정합니다
  • 병합 필드의 서식 지정
  • 병합 필드의 필드 구분 기호와 필드 끝 사이에 있는 텍스트를 지정합니다
  • 필드가 비어 있지 않은 경우 병합 필드 뒤에 삽입할 텍스트를 지정합니다
  • 필드가 비어 있지 않은 경우 병합 필드 앞에 삽입할 텍스트를 지정합니다

다음 코드 예제에서는 다음을 추가하는 방법을 보여 줍니다 MERGE 필드 사용 DOM 문서의 단락에:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
auto para = System::DynamicCast<Paragraph>(doc->GetChildNodes(NodeType::Paragraph, true)->idx_get(0));
builder->MoveTo(para);
// We want to insert a merge field like this:
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v" }
auto field = System::DynamicCast<FieldMergeField>(builder->InsertField(FieldType::FieldMergeField, false));
// { " MERGEFIELD Test1" }
field->set_FieldName(u"Test1");
// { " MERGEFIELD Test1 \\b Test2" }
field->set_TextBefore(u"Test2");
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 }
field->set_TextAfter(u"Test3");
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m" }
field->set_IsMapped(true);
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v" }
field->set_IsVerticalFormatting(true);
field->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertMergeFieldUsingDOM.docx");

삽입 Mail Merge 사용하여 문서에 주소 블록 필드 DOM

ADDRESSBLOCK 필드를 삽입하는 데 사용됩니다 Mail Merge 단어 문서의 주소 블록. ADDRESSBLOCK 워드 문서의 필드는 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-C
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
auto para = System::DynamicCast<Paragraph>(doc->GetChildNodes(NodeType::Paragraph, true)->idx_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\" }
auto field = System::DynamicCast<FieldAddressBlock>(builder->InsertField(FieldType::FieldAddressBlock, false));
// { ADDRESSBLOCK \\c 1" }
field->set_IncludeCountryOrRegionName(u"1");
// { ADDRESSBLOCK \\c 1 \\d" }
field->set_FormatAddressOnCountryOrRegion(true);
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 }
field->set_ExcludedCountryOrRegionName(u"Test2");
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 }
field->set_NameAndAddressFormat(u"Test3");
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" }
field->set_LanguageId(u"Test 4");
field->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertMailMergeAddressBlockFieldUsingDOM.docx");

사용하지 않고 문서에 고급 필드 삽입 DocumentBuilder

ADVANCE 필드는 왼쪽,오른쪽,위 또는 아래로 줄 내에서 후속 텍스트를 오프셋하는 데 사용됩니다. 그 ADVANCE 워드 문서의 필드는 FieldAdvance 수업 당신은 사용할 수 있습니다 FieldAdvance 다음 작업을 수행하는 클래스:

  • 필드 뒤에 오는 텍스트를 페이지 위쪽 가장자리에서 세로로 이동할 지점 수를 지정합니다
  • 필드 뒤에 오는 텍스트를 열,프레임 또는 텍스트 상자의 왼쪽 가장자리에서 가로로 이동할 지점 수를 지정합니다
  • 필드 뒤에 오는 텍스트를 왼쪽,오른쪽,위 또는 아래로 이동할 지점 수를 지정합니다

다음 코드 예제에서는 다음을 추가하는 방법을 보여 줍니다 ADVANCE 필드 사용 DOM 문서의 단락에:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto para = System::DynamicCast<Paragraph>(doc->GetChildNodes(NodeType::Paragraph, true)->idx_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 }
auto field = System::DynamicCast<FieldAdvance>(para->AppendField(FieldType::FieldAdvance, false));
// { ADVANCE \\d 10 " }
field->set_DownOffset(u"10");
// { ADVANCE \\d 10 \\l 10 }
field->set_LeftOffset(u"10");
// { ADVANCE \\d 10 \\l 10 \\r -3.3 }
field->set_RightOffset(u"-3.3");
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 }
field->set_UpOffset(u"0");
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 }
field->set_HorizontalPosition(u"100");
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 }
field->set_VerticalPosition(u"100");
field->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertAdvanceFieldWithOutDocumentBuilder.docx");

삽입 ASK 사용하지 않고 문서에 필드 DocumentBuilder

ASK 필드는 워드 문서의 책갈피에 할당 할 텍스트를 사용자에게 묻는 데 사용됩니다. ASK 워드 문서의 필드는 FieldAsk 수업 당신은 사용할 수 있습니다 FieldAsk 다음 작업을 수행하는 클래스:

  • 책갈피 이름 지정
  • 기본 사용자 응답 지정(프롬프트 창에 포함된 초기 값)
  • 사용자 응답을 한 번에 한 번 수신할지 여부를 지정합니다. Mail Merge 운영
  • 프롬프트 텍스트(프롬프트 창의 제목)지정

다음 코드 예제에서는 다음을 추가하는 방법을 보여 줍니다 ASK 필드 사용 DOM 문서의 단락에:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto para = System::DynamicCast<Paragraph>(doc->GetChildNodes(NodeType::Paragraph, true)->idx_get(0));
// We want to insert an Ask field like this:
// { ASK \"Test 1\" Test2 \\d Test3 \\o }
auto field = System::DynamicCast<FieldAsk>(para->AppendField(FieldType::FieldAsk, false));
// { ASK \"Test 1\" " }
field->set_BookmarkName(u"Test 1");
// { ASK \"Test 1\" Test2 }
field->set_PromptText(u"Test2");
// { ASK \"Test 1\" Test2 \\d Test3 }
field->set_DefaultResponse(u"Test3");
// { ASK \"Test 1\" Test2 \\d Test3 \\o }
field->set_PromptOnceOnMailMerge(true);
field->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertASKFieldWithOutDocumentBuilder.docx");

삽입 AUTHOR 사용하지 않고 문서에 필드 DocumentBuilder

AUTHOR 필드는 문서의 작성자의 이름을 지정하는 데 사용됩니다. Document 속성. 그 AUTHOR 워드 문서의 필드는 FieldAuthor 수업 당신은 사용할 수 있습니다 FieldAuthor 다음 작업을 수행하는 클래스:

  • 문서 작성자 이름 지정

다음 코드 예제에서는 다음을 추가하는 방법을 보여 줍니다 AUTHOR 필드 사용 DOM 문서의 단락에:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto para = System::DynamicCast<Paragraph>(doc->GetChildNodes(NodeType::Paragraph, true)->idx_get(0));
// We want to insert an AUTHOR field like this:
// { AUTHOR Test1 }
auto field = System::DynamicCast<FieldAuthor>(para->AppendField(FieldType::FieldAuthor, false));
// { AUTHOR Test1 }
field->set_AuthorName(u"Test1");
field->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertAuthorField.docx");

삽입 INCLUDETEXT 사용하지 않고 문서에 필드 DocumentBuilder

INCLUDETEXT 필드는 필드 코드에 이름이 지정된 문서에 포함된 텍스트와 그래픽을 삽입합니다. 전체 문서 또는 책갈피에서 참조하는 문서의 일부를 삽입할 수 있습니다. 워드 문서의 이 필드는 INCLUDETEXT. 당신은 사용할 수 있습니다 FieldIncludeText 다음 작업을 수행하는 클래스:

  • 포함된 문서의 책갈피 이름을 지정합니다
  • 문서의 위치 지정

다음 코드 예제에서는 다음을 추가하는 방법을 보여 줍니다 INCLUDETEXT 필드 사용 DOM 문서의 단락에:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto para = MakeObject<Paragraph>(doc);
// We want to insert an INCLUDETEXT field like this:
// { INCLUDETEXT "file path" }
auto fieldIncludeText = System::DynamicCast<FieldIncludeText>(para->AppendField(FieldType::FieldIncludeText, false));
fieldIncludeText->set_BookmarkName(u"bookmark");
fieldIncludeText->set_SourceFullName(MyDir + u"IncludeText.docx");
doc->get_FirstSection()->get_Body()->AppendChild(para);
fieldIncludeText->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertIncludeFieldWithoutDocumentBuilder.docx");

삽입 TOA 사용하지 않고 문서에 필드 DocumentBuilder

TOA (Table of Authorities)필드는 권위 표를 작성하고 삽입합니다. 그 TOA 필드로 표시된 항목을 수집합니다 TA (Table of Authorities Entry)필드 Microsoft 사무실 단어 삽입 TOA 클릭할 때 필드 Insert Table of Authorities 그 안에 Table of Authorities 에 그룹 References 탭 당신이 볼 때 TOA 문서의 필드 구문은 다음과 같습니다:

{ TOA [Switches ] }

다음 코드 예제에서는 다음을 추가하는 방법을 보여 줍니다 TOA 필드 사용 DOM 문서의 단락에:

//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>();
auto para = MakeObject<Paragraph>(doc);
// We want to insert TA and TOA fields like this:
// { TA \c 1 \l "Value 0" }
// { TOA \c 1 }
auto fieldTA = System::DynamicCast<FieldTA>(para->AppendField(FieldType::FieldTOAEntry, false));
fieldTA->set_EntryCategory(u"1");
fieldTA->set_LongCitation(u"Value 0");
doc->get_FirstSection()->get_Body()->AppendChild(para);
para = MakeObject<Paragraph>(doc);
auto fieldToa = System::DynamicCast<FieldToa>(para->AppendField(FieldType::FieldTOA, false));
fieldToa->set_EntryCategory(u"1");
doc->get_FirstSection()->get_Body()->AppendChild(para);
fieldToa->Update();
doc->Save(ArtifactsDir + u"WorkingWithFields.InsertTOAFieldWithoutDocumentBuilder.docx");
/