Hromadná korespondence
Hromadná korespondence
Tento průvodce ukazuje, jak pracovat s kódy polí hromadné korespondence a konfiguračními daty hromadné korespondence v Aspose.Words FOSS pro .NET, a kde leží hranice s prováděním sloučení. Aspose.Words FOSS pro .NET rozpoznává a aktualizuje kódy polí hromadné korespondence Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, a SKIPIF — jako součást svého enginu pro vyhodnocování polí a může číst konfigurační data hromadné korespondence (MailMergeSettings) uložená uvnitř dokumentu. Spuštění skutečného sloučení proti externímu datovému zdroji za účelem vytvoření vyplněných výstupních dokumentů — MailMerge.Execute() práce známá z komerčního produktu — je not implementována v tomto vydání; žádná MailMerge třída provádění neexistuje v aktuální ploše API.
MERGEFIELD — Čtení a úprava zástupných znaků sloučení
FieldMergeField implementuje pole MERGEFIELD. FieldName a FieldNameNoPrefix vracejí název podkladového sloupce zdroje dat, ke kterému je pole navázáno, TextBefore/TextAfter obsahují doslovný text obklopující sloučenou hodnotu a IsMapped/IsVerticalFormatting uvádějí mapování polí sloučení a příznaky rozvržení. Stejně jako každý typ pole podporuje GetFieldCode(), Update(), Unlink() a Remove().
ADDRESSBLOCK a GREETINGLINE
FieldAddressBlock implementuje pole ADDRESSBLOCK, přičemž FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat a LanguageId řídí formátování adresy příjemce. FieldGreetingLine implementuje GREETINGLINE, přičemž AlternateText, NameFormat a LanguageId řídí text pozdravu.
Pole DATABASE
FieldDatabase implementuje pole DATABASE, které zpřístupňuje podrobnosti o připojení uložené v poli: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord a LastRecord. Pro poskytnutí výsledků dotazu při aktualizaci tohoto pole implementujte IFieldDatabaseProvider a jeho metodu GetQueryResult(fileName, connection, query, field), poté ji přiřaďte k Document.FieldOptions.FieldDatabaseProvider před voláním Update(). Vlastnost Connection musí být nastavena — bez ní nemá Update() žádný zdroj dat k dotazu.
Podmíněná slučovací pole — NEXTIF a SKIPIF
FieldNextIf a FieldSkipIf implementují pole NEXTIF a SKIPIF, přičemž každé zpřístupňuje LeftExpression, ComparisonOperator a RightExpression pro podmíněný test. Document.FieldOptions.ComparisonExpressionEvaluator (je IComparisonExpressionEvaluator) může přepsat způsob, jakým jsou tyto podmíněné výrazy vyhodnocovány.
Velikost obrázkového slučovacího pole
MergeFieldImageDimension představuje šířku nebo výšku obrázku vloženého pomocí obrázkového slučovacího pole, vytvořenou jako new MergeFieldImageDimension(value) (v bodech) nebo new MergeFieldImageDimension(value, unit) s explicitním MergeFieldImageDimensionUnit (Point nebo Percent). Jeho vlastnosti Value a Unit jsou obě zapisovatelné.
Co je v rozsahu a co není
Document.MailMergeSettings vrací a MailMergeSettings objekt, který modeluje konfiguraci hromadné korespondence, OOXML přetrvává uvnitř dokumentu — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, a nastavení Office Data Source Object (ODSO) prostřednictvím OdsoFieldMapData/OdsoRecipientData kolekcí. Toto je konfigurace data kterou dokument nese, nikoli živé spojení: čtení a zápis MailMergeSettings se nepřipojuje k databázi, tabulce nebo seznamu adres, a tato edice nemá MailMerge spouštěcí třídu k provedení sloučení a vytvoření vyplněných výstupních dokumentů z něj. Co tato edice podporuje, je vrstva na úrovni polí: rozpoznávání, čtení, aktualizaci a úpravu kódů slučovacích polí samotných v rámci jednoho dokumentu pomocí enginu pro vyhodnocování polí.
Tipy a osvědčené postupy
- Považujte
MailMergeSettingsza metadata dokumentu, která můžete číst a předávat dál, nikoli za API pro připojení k externím datům — v této edici za ním nestojí žádný vykonávací engine. - Vždy nastavte
FieldDatabase.Connectionpřed volánímUpdate()na poliDATABASE, jinak aktualizace nemá co dotazovat. - Implementujte
IFieldDatabaseProviderjednou a přiřaďte jej pomocíDocument.FieldOptions.FieldDatabaseProvider, abyste centralizovali způsob, jakým všechna poleDATABASEv dokumentu získávají svá data. - Použijte
FieldMergeField.FieldNamek načtení, ke kterému sloupci zdroje dat jeMERGEFIELDvázáno, než se rozhodnete, jak jej programově zpracovat.
Časté problémy
| Problém | Příčina | Opravit |
|---|---|---|
FieldDatabase.Update() nevrací žádná data | Connection není nastaven, nebo žádný IFieldDatabaseProvider není registrován | Nastavte Connection, a přiřaďte Document.FieldOptions.FieldDatabaseProvider před aktualizací |
Očekáváno MailMerge.Execute()-styl API | Provedení sloučení proti externímu datovému zdroji není v této FOSS edici implementováno | Pracujte s třídami polí sloučení přímo (FieldMergeField, FieldDatabase, atd.) v rámci jediného dokumentu, nebo použijte komerční Aspose.Words pro .NET pro úplné provedení sloučení |
Podmínky NEXTIF/SKIPIF se vyhodnocují neočekávaně | Výchozí vyhodnocení porovnávacího výrazu neodpovídá očekávané semantice | Implementujte IComparisonExpressionEvaluator a přiřaďte jej k Document.FieldOptions.ComparisonExpressionEvaluator |
FAQ
Mohu v této edici provést hromadnou korespondenci proti CSV nebo databázi?
Ne. Tato edice implementuje kódy polí hromadné korespondence a datový model konfigurace MailMergeSettings, ale neobsahuje třídu MailMerge pro vykonání, která by se připojila k externímu zdroji dat a generovala vyplněné dokumenty.
Co vlastně mohu s poli MERGEFIELD dělat?
Můžete je číst a měnit přímo — FieldMergeField.FieldName pro název napojeného sloupce, TextBefore/TextAfter pro okolní doslovný text a Update()/Unlink()/Remove() jako jakékoli jiné pole — v aktuálním dokumentu.
Je MailMergeSettings zbytečný bez provedení hromadné korespondence?
Ne — stále se hodí pro čtení nebo zpětné načtení uložené konfigurace hromadné korespondence dokumentu, například DataSource, Query nebo MainDocumentType, i když tato edice nepracuje s touto konfigurací pro spuštění hromadné korespondence.
Jak mohu poskytnout data pro pole DATABASE?
Implementujte IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) a přiřaďte svou implementaci k Document.FieldOptions.FieldDatabaseProvider před voláním Update().
Jak mohu řídit velikost obrázku vloženého polem picture merge field?
Použijte MergeFieldImageDimension, vytvořený s hodnotou v bodech nebo hodnotou plus explicitní MergeFieldImageDimensionUnit (Point nebo Percent).
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
FieldMergeField | MERGEFIELD pole: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped |
FieldAddressBlock | ADDRESSBLOCK pole: vlastnosti formátování adresy |
FieldGreetingLine | GREETINGLINE pole: vlastnosti formátování pozdravu |
FieldDatabase | DATABASE pole: Connection, Query, FileName, TableFormat |
IFieldDatabaseProvider | Poskytuje výsledky dotazu pro pole DATABASE prostřednictvím GetQueryResult() |
FieldNextIf / FieldSkipIf | NEXTIF / SKIPIF podmíněná slučovací pole |
MergeFieldImageDimension | Šířka/výška pro obrázky slučovacích polí |
Document.MailMergeSettings | Trvale uložená data konfigurace hromadné korespondence (ne živé datové připojení) |