הכניסו שדות

ישנן מספר דרכים שונות להכניס שדות למסמך:

במאמר זה נבחן כל דרך בפירוט רב יותר לנתח כיצד להכניס שדות מסוימים באמצעות אפשרויות אלה.

הכנסת שדות לתוך מסמך באמצעות מסמך בניית מסמכים

In In In Aspose.Words The The InsertField השיטה משמשת כדי להכניס שדות חדשים למסמך. הפרמטר הראשון מקבל את קוד השדה המלא של השדה להיות מוכנס. הפרמטר השני הוא אופציונלי ומאפשר את תוצאת השדה להיות מוגדר באופן ידני. אם זה לא מסופק אז השדה עודכן באופן אוטומטי. אתה יכול לעבור אפס או ריק לפרמטר זה כדי להוסיף שדה עם ערך שדה ריק. אם אתה לא בטוח לגבי syntax קוד שדה מסוים, ליצור את השדה Microsoft Word קודם כל לעבור לראות את קוד השדה שלו.

הדוגמה הבאה של הקוד מראה כיצד להכניס שדה מיזוג למסמך באמצעות שימוש DocumentBuilder:

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

אותה טכניקה משמשת כדי להכניס שדות מקונן בתחומים אחרים.

הדוגמה הבאה של הקוד מראה כיצד להכניס שדות הקן בתוך שדה אחר באמצעות שימוש DocumentBuilder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
for (int i = 0; i < 5; i++)
builder.InsertBreak(BreakType.PageBreak);
builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);
// We want to insert a field like this:
// { IF {PAGE} <> {NUMPAGES} "See Next Page" "Last Page" }
Field field = builder.InsertField(@"IF ");
builder.MoveTo(field.Separator);
builder.InsertField("PAGE");
builder.Write(" <> ");
builder.InsertField("NUMPAGES");
builder.Write(" \"See Next Page\" \"Last Page\" ");
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertNestedFields.docx");

המונחים: Field Level

מזהה שפה הוא קיצור בינלאומי סטנדרטי לשפה במדינה או באזור גיאוגרפי. עם Aspose.Words, באפשרותך לציין את המקומיים ברמת השדה באמצעות LocaleId רכוש, אשר מקבל או מגדיר את מזהה המקומי של השדה.

דוגמה לקוד הבא מראה כיצד להשתמש באפשרות זו:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
DocumentBuilder builder = new DocumentBuilder();
Field field = builder.InsertField(FieldType.FieldDate, true);
field.LocaleId = 1049;
builder.Document.Save(ArtifactsDir + "WorkingWithFields.SpecifylocaleAtFieldlevel.docx");

תגית: Untyped / Empty Field

אם אתה רוצה להוסיף שדות לא מטיפוס / mpty ({}בדיוק כמו 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-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
FieldUnknown field = (FieldUnknown) builder.InsertField(FieldType.FieldNone, false);
doc.Save(ArtifactsDir + "WorkingWithFields.InsertFieldNone.docx");

הכנסת שדות אל תוך מסמך באמצעות שדה בונה

דרך חלופית להכניס שדות Aspose.Words הוא FieldBuilder מעמד. הוא מספק ממשק שוטף כדי לציין מתגי שדה וערכי טיעון כטקסט, צמתים או אפילו שדות מקונן.

הדוגמה הבאה של הקוד מראה כיצד להכניס שדה למסמך באמצעות FieldBuilder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
// Prepare IF field with two nested MERGEFIELD fields: { IF "left expression" = "right expression" "Firstname: { MERGEFIELD firstname }" "Lastname: { MERGEFIELD lastname }"}
FieldBuilder fieldBuilder = new FieldBuilder(FieldType.FieldIf)
.AddArgument("left expression")
.AddArgument("=")
.AddArgument("right expression")
.AddArgument(
new FieldArgumentBuilder()
.AddText("Firstname: ")
.AddField(new FieldBuilder(FieldType.FieldMergeField).AddArgument("firstname")))
.AddArgument(
new FieldArgumentBuilder()
.AddText("Lastname: ")
.AddField(new FieldBuilder(FieldType.FieldMergeField).AddArgument("lastname")));
// Insert IF field in exact location
Field field = fieldBuilder.BuildAndInsert(doc.FirstSection.Body.FirstParagraph);
field.Update();
doc.Save(ArtifactsDir + "Field.InsertFieldUsingFieldBuilder.docx");

הכנסת שדות באמצעות DOM

ניתן גם להוסיף סוגים שונים של שדות באמצעות Aspose.Words Document Object Model (DOM). בחלק זה נבחן כמה דוגמאות.

תגית: Merge שדה לתוך מסמך באמצעות DOM

The The The MERGEFIELD שדה במסמך Word יכול להיות מיוצג על ידי FieldMergeField מעמד. אתה יכול להשתמש FieldMergeField לבצע את הפעולות הבאות:

  • שם שדה המיזוג
  • מפרט את הפורמט של שדה המיזוג
  • ציין את הטקסט כי הוא בין ניתוח השדה לבין סוף השדה של שדה המיזוג
  • ציין את הטקסט להיות מוכנס לאחר שדה המיזוג אם השדה אינו ריק
  • ציין את הטקסט להיות מוכנס לפני שדה המיזוג אם השדה אינו ריק

הדוגמה הבאה מציגה כיצד להוסיף MERGE שדה באמצעות DOM לפסקה במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[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.FieldMergeField, false);
// { " MERGEFIELD Test1" }
field.FieldName = "Test1";
// { " MERGEFIELD Test1 \\b Test2" }
field.TextBefore = "Test2";
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 }
field.TextAfter = "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(ArtifactsDir + "WorkingWithFields.InsertMergeFieldUsingDOM.docx");

הכנסת Mail Merge ADDRESSBLOCK שדה לתוך מסמך באמצעות DOM

The The The ADDRESSBLOCK שדה משמש כדי להוסיף Mail Merge כתובת בלוק במסמך Word ADDRESSBLOCK שדה במסמך Word יכול להיות מיוצג על ידי FieldAddressBlock מעמד. אתה יכול להשתמש FieldAddressBlock לבצע את הפעולות הבאות:

  • ציין האם לכלול את שם המדינה/אזור בשדה
  • ציין אם לעצב את הכתובת לפי המדינה / הרגולציה של המקבל כפי שהוגדר על ידי POST*CODE (Universal Postal Union 2006)
  • שם המדינה/region
  • מפרט את שם וכתובת
  • ציין את מזהה השפה המשמש כדי לעצב את הכתובת

הדוגמה הבאה מציגה כיצד להוסיף Mail Merge ADDRESSBLOCK שדה באמצעות DOM לפסקה במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[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.FieldAddressBlock, false);
// { ADDRESSBLOCK \\c 1" }
field.IncludeCountryOrRegionName = "1";
// { ADDRESSBLOCK \\c 1 \\d" }
field.FormatAddressOnCountryOrRegion = true;
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 }
field.ExcludedCountryOrRegionName = "Test2";
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 }
field.NameAndAddressFormat = "Test3";
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" }
field.LanguageId = "Test 4";
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertMailMergeAddressBlockFieldUsingDOM.docx");

הכנסת ADVANCE שטח אל תוך מסמך מבלי להשתמש ב- DocumentBuilder

The The The ADVANCE שדה משמש כדי להתחיל טקסט לאחר מכן בתוך קו לשמאל, ימין, למעלה או למטה. The The The ADVANCE שדה במסמך Word יכול להיות מיוצג על ידי FieldAdvance מעמד. אתה יכול להשתמש FieldAdvance לבצע את הפעולות הבאות:

  • ציין את מספר הנקודות שבאמצעותו הטקסט עוקב אחר השדה צריך לעבור אנכי מן הקצה העליון של הדף
  • ציין את מספר הנקודות שבאמצעותו הטקסט עוקב אחר השדה צריך לעבור אופקית מן הקצה השמאלי של עמודה, מסגרת, או תיבת טקסט
  • ציין את מספר הנקודות שבאמצעותן יש להעביר את הטקסט שלהלן השדה, ימין, למעלה או למטה

הדוגמה הבאה מציגה כיצד להוסיף ADVANCE שדה באמצעות DOM לפסקה במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[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.FieldAdvance, false);
// { ADVANCE \\d 10 " }
field.DownOffset = "10";
// { ADVANCE \\d 10 \\l 10 }
field.LeftOffset = "10";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 }
field.RightOffset = "-3.3";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 }
field.UpOffset = "0";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 }
field.HorizontalPosition = "100";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 }
field.VerticalPosition = "100";
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertAdvanceFieldWithOutDocumentBuilder.docx");

הכנסת ASK שטח אל תוך מסמך מבלי להשתמש ב- DocumentBuilder

The The The 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-.NET
Document doc = new Document();
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
// We want to insert an Ask field like this:
// { ASK \"Test 1\" Test2 \\d Test3 \\o }
FieldAsk field = (FieldAsk) para.AppendField(FieldType.FieldAsk, false);
// { ASK \"Test 1\" " }
field.BookmarkName = "Test 1";
// { ASK \"Test 1\" Test2 }
field.PromptText = "Test2";
// { ASK \"Test 1\" Test2 \\d Test3 }
field.DefaultResponse = "Test3";
// { ASK \"Test 1\" Test2 \\d Test3 \\o }
field.PromptOnceOnMailMerge = true;
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertASKFieldWithOutDocumentBuilder.docx");

הכנסת AUTHOR שטח אל תוך מסמך מבלי להשתמש ב- DocumentBuilder

The The The AUTHOR שדה משמש כדי לציין את שם המחבר של המסמך מן Document תכונות. The The The AUTHOR שדה במסמך Word יכול להיות מיוצג על ידי FieldAuthor מעמד. אתה יכול להשתמש FieldAuthor לבצע את הפעולות הבאות:

  • שם המחבר

הדוגמה הבאה מציגה כיצד להוסיף AUTHOR שדה באמצעות DOM לפסקה במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
// We want to insert an AUTHOR field like this:
// { AUTHOR Test1 }
FieldAuthor field = (FieldAuthor) para.AppendField(FieldType.FieldAuthor, false);
field.AuthorName = "Test1"; // { AUTHOR Test1 }
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertAuthorField.docx");

הכנסת INCLUDETEXT שטח אל תוך מסמך מבלי להשתמש ב- DocumentBuilder

The The The INCLUDETEXT שדה מוסיף את הטקסט והגרפיקה הכלולים במסמך בשם קוד השדה. באפשרותך להוסיף את המסמך כולו או חלק מהמסמכים המוזכרים בסימן ספר. שדה זה במסמך Word מיוצג על ידי INCLUDETEXT. אתה יכול להשתמש FieldIncludeText לבצע את הפעולות הבאות:

  • שם הספר של המסמך
  • לציין את המיקום של המסמך

הדוגמה הבאה מציגה כיצד להוסיף INCLUDETEXT שדה באמצעות DOM לפסקה במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
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.FieldIncludeText, false);
fieldIncludeText.BookmarkName = "bookmark";
fieldIncludeText.SourceFullName = MyDir + "IncludeText.docx";
doc.FirstSection.Body.AppendChild(para);
fieldIncludeText.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertIncludeFieldWithoutDocumentBuilder.docx");

הכנסת TOA שטח אל תוך מסמך מבלי להשתמש ב- DocumentBuilder

The The The TOA (אפשרות הרשויות) בונה ומכניסת שולחן של רשויות. The The The 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-.NET
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.FieldTOAEntry, false);
fieldTA.EntryCategory = "1";
fieldTA.LongCitation = "Value 0";
doc.FirstSection.Body.AppendChild(para);
para = new Paragraph(doc);
FieldToa fieldToa = (FieldToa) para.AppendField(FieldType.FieldTOA, false);
fieldToa.EntryCategory = "1";
doc.FirstSection.Body.AppendChild(para);
fieldToa.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertTOAFieldWithoutDocumentBuilder.docx");