Utskickssammanslagning

Seriekoppling

Den här guiden visar hur man arbetar med mail-merge-fältkoder och mail-merge-konfigurationsdata i Aspose.Words FOSS för .NET, och var gränsen för merge-exekvering ligger. Aspose.Words FOSS för .NET känner igen och uppdaterar Word-mail-merge-fältkoderna — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, och SKIPIF — som en del av dess fältutvärderingsmotor, och kan läsa mail-merge-konfigurationsdata (MailMergeSettings) som lagras i ett dokument. Att köra en faktisk merge mot en extern datakälla för att generera ifyllda utmatningsdokument — den MailMerge.Execute() arbetsflöde som är bekant från den kommersiella produkten — är not implementerat i denna utgåva; ingen MailMerge exekveringsklass finns i den nuvarande API-ytan.


MERGEFIELD — Läsa och modifiera sammanslagningsplatshållare

FieldMergeField implementerar MERGEFIELD-fältet. FieldName och FieldNameNoPrefix returnerar det underliggande datakällans kolumnnamn som fältet är bundet till, TextBefore/TextAfter innehåller bokstavlig text som omsluter det sammanslagna värdet, och IsMapped/IsVerticalFormatting rapporterar sammanslagningsfält-mappning och layoutflaggor. Precis som varje fälttyp stödjer den GetFieldCode(), Update(), Unlink() och Remove().


ADDRESSBLOCK och GREETINGLINE

FieldAddressBlock implementerar ADDRESSBLOCK-fältet, med FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat och LanguageId som styr hur mottagarens adress formateras. FieldGreetingLine implementerar GREETINGLINE, med AlternateText, NameFormat och LanguageId som styr hälsningstexten.


DATABASE-fält

FieldDatabase implementerar DATABASE-fältet och exponerar anslutningsdetaljerna som lagras i fältet: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord och LastRecord. För att leverera frågeresultat när detta fält uppdateras, implementera IFieldDatabaseProvider och dess GetQueryResult(fileName, connection, query, field)-metod, tilldela den sedan till Document.FieldOptions.FieldDatabaseProvider innan du anropar Update(). Connection-egenskapen måste sättas — utan den har Update() ingen datakälla att fråga.


Villkorliga sammanslagningsfält — NEXTIF och SKIPIF

FieldNextIf och FieldSkipIf implementerar NEXTIF- och SKIPIF-fälten, som var och en exponerar LeftExpression, ComparisonOperator och RightExpression för det villkorliga testet. Document.FieldOptions.ComparisonExpressionEvaluator (en IComparisonExpressionEvaluator) kan åsidosätta hur dessa villkorliga uttryck utvärderas.


Storlek på bildsammanfogningsfält

MergeFieldImageDimension representerar en bredd eller höjd för en bild som infogas via ett bildsammanfogningsfält, konstruerad som new MergeFieldImageDimension(value) (i punkter) eller new MergeFieldImageDimension(value, unit) med en explicit MergeFieldImageDimensionUnit (Point eller Percent). Dess Value- och Unit-egenskaper är båda skrivbara.


Vad som omfattas och vad som inte gör det

Document.MailMergeSettings returnerar en MailMergeSettings objekt som modellerar mail-merge-konfigurationen som OOXML lagrar i ett dokument — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, och Office Data Source Object (ODSO)-inställningarna via OdsoFieldMapData/OdsoRecipientData samlingar. Detta är konfiguration data som dokumentet bär, inte en levande anslutning: läsning och skrivning MailMergeSettings ansluter inte till en databas, kalkylblad eller adresslista, och den här utgåvan har ingen MailMerge exekveringsklass för att köra en sammanslagning och skapa ifyllda utmatningsdokument från den. Vad den här utgåvan stödjer är lager på fältnivå ovanför: att känna igen, läsa, uppdatera och modifiera själva sammanslagningsfältkoderna i ett enda dokument via fältutvärderingsmotorn.


Tips och bästa praxis

  • Behandla MailMergeSettings som dokumentmetadata som du kan läsa och vidarebefordra, inte som en API för att ansluta till extern data — det finns ingen exekveringsmotor bakom den i den här utgåvan.
  • Ställ alltid in FieldDatabase.Connection innan du anropar Update() på ett DATABASE-fält, annars har uppdateringen inget att fråga efter.
  • Implementera IFieldDatabaseProvider en gång och tilldela den via Document.FieldOptions.FieldDatabaseProvider för att centralisera hur alla DATABASE-fält i ett dokument hämtar sin data.
  • Använd FieldMergeField.FieldName för att läsa vilken datakällskolumn en MERGEFIELD är bunden till innan du bestämmer hur den ska bearbetas programatiskt.

Vanliga problem

ProblemOrsakÅtgärd
FieldDatabase.Update() returnerar ingen dataConnection är inte satt, eller så är ingen IFieldDatabaseProvider registreradStäll in Connection, och tilldela Document.FieldOptions.FieldDatabaseProvider innan du uppdaterar
Förväntade en MailMerge.Execute()-stil APISammanfogningskörning mot en extern datakälla är inte implementerad i denna FOSS-utgåvaArbeta med sammanslagningsfältklasserna direkt (FieldMergeField, FieldDatabase, osv.) i ett enda dokument, eller använd den kommersiella Aspose.Words för .NET för fullständig sammanslagningskörning
NEXTIF/SKIPIF villkor utvärderas oväntatStandardutvärdering av jämförelseuttryck matchar inte den förväntade semantikenImplementera IComparisonExpressionEvaluator och tilldela den till Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

Kan jag köra en brevlådesammanslagning mot en CSV eller databas i den här utgåvan?

Nej. Denna utgåva implementerar fältkoderna för brevlådesammanslagning och MailMergeSettings-konfigurationsdatamodellen, men det finns ingen MailMerge-exekveringsklass för att ansluta till en extern datakälla och generera ifyllda dokument.

Vad kan jag faktiskt göra med MERGEFIELD-fält, då?

Du kan läsa och ändra dem direkt — FieldMergeField.FieldName för det bundna kolumnnamnet, TextBefore/TextAfter för omgivande bokstavlig text, och Update()/Unlink()/Remove() som vilket annat fält som helst — i det aktuella dokumentet.

Är MailMergeSettings värdelös utan merge-exekvering?

Nej — det är fortfarande användbart för att läsa eller återföra ett dokuments lagrade mail-merge-konfiguration, såsom DataSource, Query eller MainDocumentType, även om den här utgåvan inte använder den konfigurationen för att köra en merge.

Hur levererar jag data till ett DATABASE-fält?

Implementera IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) och tilldela din implementation till Document.FieldOptions.FieldDatabaseProvider innan du anropar Update().

Hur kontrollerar jag storleken på en bild som infogas via ett picture merge-fält?

Använd MergeFieldImageDimension, konstruerad med ett punktvärde eller ett värde plus en explicit MergeFieldImageDimensionUnit (Point eller Percent).


API Reference Sammanfattning

Klass / MetodBeskrivning
FieldMergeFieldMERGEFIELD fält: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK fält: egenskaper för adressformatering
FieldGreetingLineGREETINGLINE fält: hälsningsformateringsegenskaper
FieldDatabaseDATABASE fält: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderTillhandahåller frågeresultat för DATABASE fält via GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF villkorliga sammanslagningsfält
MergeFieldImageDimensionBredd/höjd för bildens sammanslagningsfältbilder
Document.MailMergeSettingsSparad mail-merge-konfigurationsdata (inte en levande datakoppling)

Se även

 Svenska