מיזוג דואר
מיזוג דואר
מדריך זה מציג כיצד לעבוד עם קודי שדות מיזוג מכתבים ונתוני תצורת מיזוג מכתבים ב-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 / FieldSkipIf | NEXTIF / SKIPIF שדות מיזוג מותנים |
MergeFieldImageDimension | רוחב/גובה לתמונות של שדה מיזוג |
Document.MailMergeSettings | נתוני תצורת מיזוג דואר משוכנים (לא חיבור נתונים חי) |