Stampa unione

Stampa unione

Questa guida mostra come lavorare con i codici di campo di stampa unione e i dati di configurazione della stampa unione in Aspose.Words FOSS per .NET, e dove si trova il confine con l’esecuzione della stampa unione. Aspose.Words FOSS per .NET riconosce e aggiorna i codici di campo di stampa unione di Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, e SKIPIF — come parte del suo motore di valutazione dei campi, e può leggere i dati di configurazione della stampa unione (MailMergeSettings) conservati all’interno di un documento. Eseguire una stampa unione reale contro una fonte dati esterna per generare documenti di output popolati — il MailMerge.Execute() flusso di lavoro familiare al prodotto commerciale — è not implementato in questa edizione; nessun MailMerge classe di esecuzione esiste nella superficie attuale di API.


MERGEFIELD — Lettura e modifica dei segnaposto di stampa unione

FieldMergeField implementa il campo MERGEFIELD. FieldName e FieldNameNoPrefix restituiscono il nome della colonna della sorgente dati a cui il campo è associato, TextBefore/TextAfter contengono testo letterale avvolto attorno al valore unito, e IsMapped/IsVerticalFormatting segnalano la mappatura del campo di stampa unione e i flag di layout. Come ogni tipo di campo, supporta GetFieldCode(), Update(), Unlink() e Remove().


ADDRESSBLOCK e GREETINGLINE

FieldAddressBlock implementa il campo ADDRESSBLOCK, con FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat e LanguageId che controllano il modo in cui l’indirizzo del destinatario è formattato. FieldGreetingLine implementa GREETINGLINE, con AlternateText, NameFormat e LanguageId che controllano il testo del saluto.


Campo DATABASE

FieldDatabase implementa il campo DATABASE, esponendo i dettagli di connessione memorizzati nel campo: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord e LastRecord. Per fornire i risultati della query quando questo campo viene aggiornato, implementa IFieldDatabaseProvider e il suo metodo GetQueryResult(fileName, connection, query, field), quindi assegnalo a Document.FieldOptions.FieldDatabaseProvider prima di chiamare Update(). La proprietà Connection deve essere impostata — senza di essa, Update() non ha alcuna origine dati da interrogare.


Campi di unione condizionali — NEXTIF e SKIPIF

FieldNextIf e FieldSkipIf implementano i campi NEXTIF e SKIPIF, ognuno dei quali espone LeftExpression, ComparisonOperator e RightExpression per il test condizionale. Document.FieldOptions.ComparisonExpressionEvaluator (un IComparisonExpressionEvaluator) può sovrascrivere il modo in cui queste espressioni condizionali vengono valutate.


Dimensionamento del campo di unione immagine

MergeFieldImageDimension rappresenta una larghezza o altezza per un’immagine inserita tramite un campo di unione immagine, costruita come new MergeFieldImageDimension(value) (in punti) o new MergeFieldImageDimension(value, unit) con un MergeFieldImageDimensionUnit esplicito (Point o Percent). Le sue proprietà Value e Unit sono entrambe scrivibili.


Cosa è in ambito e cosa non lo è

Document.MailMergeSettings restituisce un MailMergeSettings oggetto che modella la configurazione della stampa unione OOXML persiste all’interno di un documento — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, e le impostazioni dell’Office Data Source Object (ODSO) tramite OdsoFieldMapData/OdsoRecipientData collezioni. Questa è la configurazione data che il documento porta, non una connessione attiva: lettura e scrittura MailMergeSettings non si connette a un database, foglio di calcolo o rubrica, e questa edizione non ha MailMerge classe di esecuzione per avviare una stampa unione e produrre documenti di output popolati da essa. Ciò che questa edizione supporta è il livello a livello di campo sopra: riconoscere, leggere, aggiornare e modificare i codici dei campi di stampa unione stessi all’interno di un singolo documento tramite il motore di valutazione dei campi.


Suggerimenti e migliori pratiche

  • Considera MailMergeSettings come metadati del documento che puoi leggere e fare round-trip, non come un API per connettersi a dati esterni — non c’è alcun motore di esecuzione dietro di esso in questa edizione.
  • Imposta sempre FieldDatabase.Connection prima di chiamare Update() su un campo DATABASE, altrimenti l’aggiornamento non ha nulla da interrogare.
  • Implementa IFieldDatabaseProvider una sola volta e assegnalo tramite Document.FieldOptions.FieldDatabaseProvider per centralizzare il modo in cui tutti i campi DATABASE in un documento risolvono i loro dati.
  • Usa FieldMergeField.FieldName per leggere a quale colonna della fonte dati è associato un MERGEFIELD prima di decidere come elaborarlo programmaticamente.

Problemi comuni

ProblemaCausaCorreggi
FieldDatabase.Update() non restituisce datiConnection non è impostato, oppure nessun IFieldDatabaseProvider è registratoImposta Connection e assegna Document.FieldOptions.FieldDatabaseProvider prima di aggiornare
Atteso un API in stile MailMerge.Execute()L’esecuzione di merge contro una fonte dati esterna non è implementata in questa edizione FOSSLavora direttamente con le classi dei campi di merge (FieldMergeField, FieldDatabase, ecc.) all’interno di un unico documento, oppure usa il Aspose.Words commerciale per .NET per un’esecuzione completa di merge
Le condizioni NEXTIF/SKIPIF valutano in modo inattesoLa valutazione dell’espressione di confronto predefinita non corrisponde alla semantica previstaImplementa IComparisonExpressionEvaluator e assegnalo a Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

Posso eseguire un mail merge su un CSV o un database in questa edizione?

No. Questa edizione implementa i codici di campo del mail-merge e il modello di dati di configurazione MailMergeSettings, ma non esiste alcuna classe di esecuzione MailMerge per connettersi a una fonte dati esterna e generare documenti popolati.

Cosa posso effettivamente fare con i campi MERGEFIELD, allora?

Puoi leggerli e modificarli direttamente — FieldMergeField.FieldName per il nome della colonna collegata, TextBefore/TextAfter per il testo letterale circostante, e Update()/Unlink()/Remove() come qualsiasi altro campo — all’interno del documento corrente.

È MailMergeSettings inutile senza l’esecuzione del merge?

No — è ancora utile per leggere o riciclare la configurazione di stampa unita memorizzata in un documento, come DataSource, Query o MainDocumentType, anche se questa edizione non utilizza tale configurazione per eseguire un merge.

Come fornisco i dati per un campo DATABASE?

Implementa IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) e assegna la tua implementazione a Document.FieldOptions.FieldDatabaseProvider prima di chiamare Update().

Come controllo la dimensione di un’immagine inserita da un campo merge immagine?

Usa MergeFieldImageDimension, costruito con un valore in punti o un valore più un MergeFieldImageDimensionUnit esplicito (Point o Percent).


API Reference Riepilogo

Classe / MetodoDescrizione
FieldMergeFieldMERGEFIELD campo: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK campo: proprietà di formattazione dell’indirizzo
FieldGreetingLineGREETINGLINE campo: proprietà di formattazione del saluto
FieldDatabaseDATABASE campo: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderFornisce risultati di query per i campi DATABASE tramite GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF campi di unione condizionali
MergeFieldImageDimensionLarghezza/altezza per le immagini dei campi di unione
Document.MailMergeSettingsDati di configurazione della stampa unione persistenti (non una connessione dati live)

Vedi anche

 Italiano