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 MailMergeSettings za 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.Connection před voláním Update() na poli DATABASE, jinak aktualizace nemá co dotazovat.
  • Implementujte IFieldDatabaseProvider jednou a přiřaďte jej pomocí Document.FieldOptions.FieldDatabaseProvider, abyste centralizovali způsob, jakým všechna pole DATABASE v dokumentu získávají svá data.
  • Použijte FieldMergeField.FieldName k načtení, ke kterému sloupci zdroje dat je MERGEFIELD vázáno, než se rozhodnete, jak jej programově zpracovat.

Časté problémy

ProblémPříčinaOpravit
FieldDatabase.Update() nevrací žádná dataConnection není nastaven, nebo žádný IFieldDatabaseProvider není registrovánNastavte Connection, a přiřaďte Document.FieldOptions.FieldDatabaseProvider před aktualizací
Očekáváno MailMerge.Execute()-styl APIProvedení sloučení proti externímu datovému zdroji není v této FOSS edici implementovánoPracujte 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é semanticeImplementujte 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 / MetodaPopis:
FieldMergeFieldMERGEFIELD pole: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK pole: vlastnosti formátování adresy
FieldGreetingLineGREETINGLINE pole: vlastnosti formátování pozdravu
FieldDatabaseDATABASE pole: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderPoskytuje výsledky dotazu pro pole DATABASE prostřednictvím GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF podmíněná slučovací pole
MergeFieldImageDimensionŠířka/výška pro obrázky slučovacích polí
Document.MailMergeSettingsTrvale uložená data konfigurace hromadné korespondence (ne živé datové připojení)

Viz také:

 Čeština