C# Syncfusion merge dynamic fields su documento Word


Una delle funzioni più comode per la produzione di reportistica da C# è l’utilizzo del package “Syncfusion”, per la manipolazione di file word.

Nella maggior parte dei casi i campi del documento sono pochi e statici, ma qualora dovessero essere tanti e non si voglia creare un oggetto di business con tutte quelle proprietà, è possibile generare e fare merge dei field dinamici su documento Word utilizzando C# e Syncfusion.

Dato un template Word con una griglia tipo questa (qui non si scappa… si deve fare a mano!)

una scelta è creare un oggetto di business (un Model C#) con tutte le proprietà. Ma il caso esposto in questo articolo riguarda la creazione di un oggetto dinamico a cui queste proprietà vengano aggiunte a partire da una Hashtable, popolata all’interno di vari cicli foreach.

Intanto è necessario aggiungere al progetto una Reference a
Assemblies > Framework > Microsoft.CSharp

Qui di seguito il codice necessario per generare dinamicamente le proprietà dell’oggetto che andremo ad agganciare alla tabella Word

dynamic riskTable = new ExpandoObject();
var dictionary = (IDictionary)riskTable;
foreach (DictionaryEntry de in (Hashtable)lstRischi)
{
dictionary.Add(de.Key.ToString(), de.Value);
}

A questo punto, per completare il merge, ecco il codice completo per l’uso di Syncfusion in C# per la creazione di un file word

List listaReport = new List();
listaReport.Add(riskTable); //Notare che va usato, rispetto al codice precedente, l’oggetto originale
WordDocument document = new WordDocument(“nomefile.docx”);
MailMergeDataTable dataTable = new MailMergeDataTable(“DatiTable”, listaReport);
document.MailMerge.ExecuteGroup(dataTable);
document.Save(nomeFileOutput, FormatType.Docx);
document.Close();

All’interno del file Word nel quale si voglio agganciare i fields, i campi, è necessario inserire un inizio ed un fine blocco, come da immagine seguente

Qui il link alla documentazione ufficiale Syncfusion, relativa all’uso del mailmerge

https://help.syncfusion.com/file-formats/docio/mail-merge/mail-merge-for-group


Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s…

%d blogger hanno fatto clic su Mi Piace per questo: