מיזוג דואר

מיזוג דואר

מדריך זה מציג כיצד לעבוד עם קודי שדות מיזוג מכתבים ונתוני תצורת מיזוג מכתבים ב-Aspose.Words FOSS עבור .NET, והיכן נמצא הגבול עם ביצוע המיזוג. Aspose.Words FOSS עבור .NET מזהה ומעדכן את קודי השדה של מיזוג מכתבים ב-Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, ו SKIPIF — כחלק ממנוע הערכת השדות שלו, ויכול לקרוא את נתוני תצורת מיזוג המכתבים (MailMergeSettings) שנשמרים בתוך מסמך. הרצת מיזוג אמיתי מול מקור נתונים חיצוני כדי ליצור מסמכי פלט ממולאים — ה MailMerge.Execute() תהליך העבודה המוכר מהמוצר המסחרי — הוא not מיושם בגרסה זו; אין MailMerge מחלקת ביצוע קיימת במשטח API הנוכחי.


MERGEFIELD — קריאה ושינוי של מצייני מיזוג

FieldMergeField מיישם את שדה MERGEFIELD. FieldName ו-FieldNameNoPrefix מחזירים את שם העמודה במקור הנתונים שהשדה קשור אליו, TextBefore/TextAfter מחזיקים טקסט מילולי העוטף את הערך הממוזג, ו-IsMapped/IsVerticalFormatting מדווחים על מיפוי שדה המיזוג ודגלי הפריסה. כמו כל סוג שדה, הוא תומך ב-GetFieldCode(), Update(), Unlink(), ו-Remove().


ADDRESSBLOCK ו-GREETINGLINE

FieldAddressBlock מיישם את שדה ADDRESSBLOCK, כאשר FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat ו-LanguageId שולטנים באופן שבו כתובת הנמען מעוצבת. FieldGreetingLine מיישם את GREETINGLINE, כאשר AlternateText, NameFormat, ו-LanguageId שולטנים בטקסט הפנייה.


שדה DATABASE

FieldDatabase מיישם את השדה DATABASE, חושף את פרטי החיבור השמורים בשדה: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord ו-LastRecord. כדי לספק תוצאות שאילתה כאשר השדה מתעדכן, מיישמים את IFieldDatabaseProvider ואת השיטה GetQueryResult(fileName, connection, query, field) שלו, ואז מקצים אותו ל-Document.FieldOptions.FieldDatabaseProvider לפני הקריאה ל-Update(). חייבים להגדיר את המאפיין Connection — ללא זה, ל-Update() אין מקור נתונים לשאילתה.


שדות מיזוג מותנים — NEXTIF ו-SKIPIF

FieldNextIf ו-FieldSkipIf מיישמים את השדות NEXTIF ו-SKIPIF, שכל אחד חושף את LeftExpression, ComparisonOperator ו-RightExpression לבחינה המותנית. Document.FieldOptions.ComparisonExpressionEvaluator (‏IComparisonExpressionEvaluator) יכול לעקוף את האופן שבו ביטויים מותנים אלה מתועדפים.


גודל שדה מיזוג תמונה

MergeFieldImageDimension מייצג רוחב או גובה של תמונה שמוכנסת באמצעות שדה מיזוג תמונה, נבנה כ-new MergeFieldImageDimension(value) (בנקודות) או כ-new MergeFieldImageDimension(value, unit) עם MergeFieldImageDimensionUnit מפורש (Point או Percent). המאפיינים Value ו-Unit שלו ניתנים לכתיבה.


מה נכלל בטווח ומה אינו

Document.MailMergeSettings מחזיר a MailMergeSettings אובייקט שמדמה את תצורת המיזוג בדואר OOXML נשמר בתוך מסמך — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, והגדרות Office Data Source Object (ODSO) באמצעות OdsoFieldMapData/OdsoRecipientData אוספים. זו תצורה data המסמך נושא, ולא חיבור חי: קריאה וכתיבה MailMergeSettings אינה מתחברת למסד נתונים, גליון אלקטרוני, או רשימת כתובות, וגרסה זו אינה כוללת MailMerge מחלקת ביצוע להריץ מיזוג וליצור מסמכי פלט ממולאים ממנו. מה שגרסה זו תומכת בו הוא השכבה ברמת השדה למעלה: זיהוי, קריאה, עדכון ושינוי של קודי שדות המיזוג עצמם בתוך מסמך יחיד באמצעות מנוע הערכת השדות.


טיפים ושיטות מומלצות

  • התייחס ל-MailMergeSettings כמטא-נתוני מסמך שניתן לקרוא ולשגר בחזרה, ולא כ-API לחיבור לנתונים חיצוניים — אין מנוע ביצוע מאחוריו בגרסה הזו.
  • תמיד הגדר FieldDatabase.Connection לפני שאתה קורא ל-Update() על שדה DATABASE, אחרת לעדכון אין מה לשאול.
  • מימוש IFieldDatabaseProvider פעם אחת והקצאתו דרך Document.FieldOptions.FieldDatabaseProvider כדי לרכז את האופן שבו כל השדות DATABASE במסמך פותרים את הנתונים שלהם.
  • השתמש ב-FieldMergeField.FieldName כדי לקרוא לאיזו עמודת מקור נתונים MERGEFIELD קשור לפני שמחליטים איך לעבד אותו תכנותית.

בעיות נפוצות

בעיהסיבהתיקון
FieldDatabase.Update() אינו מחזיר נתוניםConnection אינו מוגדר, או שאין IFieldDatabaseProvider רשוםהגדר את Connection, והקצה את Document.FieldOptions.FieldDatabaseProvider לפני העדכון
צפוי MailMerge.Execute() בסגנון APIביצוע מיזוג מול מקור נתונים חיצוני אינו ממומש במהדורה הקוד הפתוח (FOSS) הזועבוד עם מחלקות שדות המיזוג ישירות (FieldMergeField, FieldDatabase, וכו’) בתוך מסמך יחיד, או השתמש ב-Aspose.Words המסחרי עבור .NET לביצוע מיזוג מלא
תנאי NEXTIF/SKIPIF מתבצעים באופן בלתי צפויהערכת ביטוי ההשוואה ברירת המחדל אינה תואמת את המשמעות הצפויהמממשים את IComparisonExpressionEvaluator ומשייכים אותו ל-Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

האם אפשר לבצע מיזוג דואר נגד CSV או מסד נתונים בגרסה זו?

לא. גרסה זו מיישמת את קודי שדות מיזוג הדואר ואת מודל הנתונים של תצורת MailMergeSettings, אך אין מחלקת ביצוע MailMerge כדי להתחבר למקור נתונים חיצוני וליצור מסמכים ממולאים.

מה אני בעצם יכול לעשות עם השדות MERGEFIELD, אז?

אתה יכול לקרוא ולשנות אותם ישירות — FieldMergeField.FieldName בשביל שם העמודה הקשור, TextBefore/TextAfter עבור הטקסט המילולי סביב, ו-Update()/Unlink()/Remove() כמו כל שדה אחר — בתוך המסמך הנוכחי.

האם MailMergeSettings חסר תועלת ללא הרצת מיזוג?

לא — הוא עדיין שימושי לקריאה או להעברת תצורת המיזוג הדואר האחסונית של מסמך, כגון DataSource, Query או MainDocumentType, למרות שהגרסה הזו אינה פועלת על תצורה זו כדי לבצע מיזוג.

איך אני מספק נתונים לשדה DATABASE?

מממשים את IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) ומקצים את המימוש שלכם ל-Document.FieldOptions.FieldDatabaseProvider לפני קריאה ל-Update().

איך אני שולט בגודל של תמונה שמוכנסת על ידי שדה מיזוג תמונה?

השתמש ב-MergeFieldImageDimension, שנבנה עם ערך בנקודות או ערך בתוספת MergeFieldImageDimensionUnit מפורש (Point או Percent).


API Reference סיכום

מחלקה / שיטהתיאור
FieldMergeFieldשדה MERGEFIELD: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockשדה ADDRESSBLOCK: מאפייני עיצוב כתובת
FieldGreetingLineשדה GREETINGLINE: מאפייני עיצוב הפנייה
FieldDatabaseשדה DATABASE: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderמספק תוצאות שאילתה עבור שדות DATABASE דרך GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF שדות מיזוג מותנים
MergeFieldImageDimensionרוחב/גובה לתמונות של שדה מיזוג
Document.MailMergeSettingsנתוני תצורת מיזוג דואר משוכנים (לא חיבור נתונים חי)

ראה גם

 עברית