Scalanie korespondencji

Korespondencja seryjna

Ten przewodnik pokazuje, jak pracować z kodami pól scalania korespondencji i danymi konfiguracyjnymi scalania korespondencji w Aspose.Words FOSS dla .NET, oraz gdzie znajduje się granica z wykonaniem scalania. Aspose.Words FOSS dla .NET rozpoznaje i aktualizuje kody pól scalania korespondencji w Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, oraz SKIPIF — jako część jego silnika oceny pól i może odczytać dane konfiguracyjne scalania korespondencji (MailMergeSettings) przechowywane wewnątrz dokumentu. Przeprowadzanie rzeczywistego scalania z zewnętrznym źródłem danych w celu generowania wypełnionych dokumentów wyjściowych — MailMerge.Execute() przepływ pracy znany z produktu komercyjnego — jest not zaimplementowany w tej edycji; brak MailMerge klasy wykonawczej w bieżącym interfejsie API powierzchni.


MERGEFIELD — Odczytywanie i modyfikowanie znaczników scalenia

FieldMergeField implementuje pole MERGEFIELD. FieldName i FieldNameNoPrefix zwracają nazwę kolumny źródła danych, do której pole jest powiązane, TextBefore/TextAfter przechowują dosłowny tekst otaczający scaloną wartość, a IsMapped/IsVerticalFormatting raportują mapowanie pola scalenia oraz flagi układu. Jak każdy typ pola, obsługuje GetFieldCode(), Update(), Unlink() i Remove().


ADDRESSBLOCK i GREETINGLINE

FieldAddressBlock implementuje pole ADDRESSBLOCK, przy czym FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat i LanguageId kontrolują sposób formatowania adresu odbiorcy. FieldGreetingLine implementuje GREETINGLINE, a AlternateText, NameFormat i LanguageId kontrolują tekst powitania.


Pole DATABASE

FieldDatabase implementuje pole DATABASE, udostępniając szczegóły połączenia przechowywane w polu: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord oraz LastRecord. Aby dostarczyć wyniki zapytania, gdy to pole jest aktualizowane, zaimplementuj IFieldDatabaseProvider i jego metodę GetQueryResult(fileName, connection, query, field), a następnie przypisz ją do Document.FieldOptions.FieldDatabaseProvider przed wywołaniem Update(). Właściwość Connection musi być ustawiona — bez niej, Update() nie ma źródła danych do zapytania.


Warunkowe pola scalania — NEXTIF i SKIPIF

FieldNextIf i FieldSkipIf implementują pola NEXTIF i SKIPIF, z których każde udostępnia LeftExpression, ComparisonOperator oraz RightExpression do testu warunkowego. Document.FieldOptions.ComparisonExpressionEvaluator (jako IComparisonExpressionEvaluator) może nadpisać sposób oceny tych wyrażeń warunkowych.


Rozmiarowanie pola scalania obrazu

MergeFieldImageDimension reprezentuje szerokość lub wysokość obrazu wstawianego przez pole scalania obrazu, skonstruowaną jako new MergeFieldImageDimension(value) (w punktach) lub new MergeFieldImageDimension(value, unit) z wyraźnym MergeFieldImageDimensionUnit (Point lub Percent). Jego właściwości Value i Unit są zapisywalne.


Co jest w zakresie, a co nie

Document.MailMergeSettings zwraca a MailMergeSettings obiekt modelujący konfigurację korespondencji seryjnej OOXML przechowywany jest wewnątrz dokumentu — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, oraz ustawienia Office Data Source Object (ODSO) poprzez OdsoFieldMapData/OdsoRecipientData kolekcje. To jest konfiguracja data którą dokument zawiera, a nie aktywne połączenie: odczyt i zapis MailMergeSettings nie łączy się z bazą danych, arkuszem kalkulacyjnym ani listą adresową, a ta edycja nie ma MailMerge klasy wykonawczej do uruchomienia korespondencji i wygenerowania wypełnionych dokumentów wyjściowych. To, co ta edycja obsługuje, to warstwa poziomu pól powyżej: rozpoznawanie, odczyt, aktualizowanie i modyfikowanie samych kodów pól korespondencji w jednym dokumencie przy użyciu field evaluation engine.


Wskazówki i najlepsze praktyki

  • Traktuj MailMergeSettings jako metadane dokumentu, które możesz odczytać i przekazać dalej, a nie jako API do łączenia się z danymi zewnętrznymi — w tej edycji nie ma silnika wykonawczego.
  • Zawsze ustaw FieldDatabase.Connection przed wywołaniem Update() na polu DATABASE, w przeciwnym razie aktualizacja nie będzie miała czego zapytać.
  • Zaimplementuj IFieldDatabaseProvider raz i przypisz go za pomocą Document.FieldOptions.FieldDatabaseProvider, aby scentralizować sposób, w jaki wszystkie pola DATABASE w dokumencie rozwiązują swoje dane.
  • Użyj FieldMergeField.FieldName, aby odczytać, do której kolumny źródła danych jest powiązany MERGEFIELD, zanim zdecydujesz, jak przetworzyć go programowo.

Typowe problemy

ProblemPrzyczynaNapraw
FieldDatabase.Update() nie zwraca danychConnection nie jest ustawiony, lub żaden IFieldDatabaseProvider nie jest zarejestrowanyUstaw Connection i przypisz Document.FieldOptions.FieldDatabaseProvider przed aktualizacją
Oczekiwano MailMerge.Execute()-stylowego APIWykonanie scalania z zewnętrznym źródłem danych nie jest zaimplementowane w tej wersji FOSSPracuj bezpośrednio z klasami pól scalania (FieldMergeField, FieldDatabase itp.) w jednym dokumencie lub użyj komercyjnego Aspose.Words dla .NET, aby uzyskać pełne wykonanie scalania
Warunki NEXTIF/SKIPIF oceniają się nieoczekiwanieDomyślna ocena wyrażenia porównania nie odpowiada oczekiwanej semantyceZaimplementuj IComparisonExpressionEvaluator i przypisz go do Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

Czy mogę wykonać scalanie korespondencji z plikiem CSV lub bazą danych w tej edycji?

Nie. Ta edycja implementuje kody pól scalania korespondencji oraz model danych konfiguracji MailMergeSettings, ale nie ma klasy wykonawczej MailMerge, aby połączyć się z zewnętrznym źródłem danych i wygenerować wypełnione dokumenty.

Co właściwie mogę zrobić z polami MERGEFIELD?

Możesz odczytywać i modyfikować je bezpośrednio — FieldMergeField.FieldName dla nazwy powiązanej kolumny, TextBefore/TextAfter dla otaczającego tekstu dosłownego oraz Update()/Unlink()/Remove() jak każde inne pole — w bieżącym dokumencie.

Czy MailMergeSettings jest bezużyteczne bez wykonania scalania?

Nie — nadal przydaje się do odczytu lub przekazywania dalej zapisanej konfiguracji korespondencji seryjnej dokumentu, takiej jak DataSource, Query lub MainDocumentType, mimo że ta edycja nie wykorzystuje tej konfiguracji do uruchomienia scalania.

Jak dostarczyć dane dla pola DATABASE?

Zaimplementuj IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) i przypisz swoją implementację do Document.FieldOptions.FieldDatabaseProvider przed wywołaniem Update().

Jak kontrolować rozmiar obrazu wstawianego przez pole scalania obrazu?

Użyj MergeFieldImageDimension, skonstruowanego z wartości punktowej lub wartości plus wyraźny MergeFieldImageDimensionUnit (Point lub Percent).


API Reference Podsumowanie

Klasa / MetodaOpis
FieldMergeFieldPole MERGEFIELD: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockPole ADDRESSBLOCK: właściwości formatowania adresu
FieldGreetingLinepole GREETINGLINE: właściwości formatowania pozdrowienia
FieldDatabasepole DATABASE: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderDostarcza wyniki zapytań dla pól DATABASE za pośrednictwem GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF pola scalania warunkowego
MergeFieldImageDimensionSzerokość/wysokość dla obrazów pól scalania
Document.MailMergeSettingsTrwale przechowywane dane konfiguracji scalania korespondencji (nie jest to połączenie danych w czasie rzeczywistym)

Zobacz także

 Polski