การรวมจดหมาย
การรวมจดหมาย
คำแนะนำนี้แสดงวิธีทำงานกับรหัสฟิลด์เมลเมิร์จและข้อมูลการกำหนดค่าเมลเมิร์จใน 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. เพื่อให้ผลลัพธ์ของการสืบค้นเมื่อฟิลด์นี้ถูกอัปเดต, ให้ทำการ implement 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 ใช้ไม่ได้หรือไม่มีประโยชน์หากไม่มีการดำเนินการ merge?
ไม่ — มันยังคงมีประโยชน์สำหรับการอ่านหรือรอบการส่งต่อการตั้งค่า mail-merge ที่จัดเก็บในเอกสาร, เช่น DataSource, Query หรือ MainDocumentType, แม้ว่ารุ่นนี้จะไม่ทำงานกับการตั้งค้านั้นเพื่อรัน merge.
ฉันจะให้ข้อมูลสำหรับฟิลด์ DATABASE อย่างไร?
Implement IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) และกำหนดการทำงานของคุณให้กับ Document.FieldOptions.FieldDatabaseProvider ก่อนเรียก Update().
ฉันจะควบคุมขนาดของภาพที่แทรกโดยฟิลด์ picture merge อย่างไร?
ใช้ 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 | ข้อมูลการกำหนดค่า mail-merge ที่บันทึกไว้ (ไม่ใช่การเชื่อมต่อข้อมูลแบบเรียลไทม์) |