Genera Word dal modello in C#

La generazione automatizzata di documenti Word è ampiamente utilizzata dalle aziende per creare una moltitudine di report. In alcuni casi, i documenti vengono creati da zero. D’altra parte, i modelli predefiniti vengono utilizzati per generare documenti Word popolando i segnaposto. In questo articolo dimostrerò come generare documenti di Word da modelli in modo dinamico e programmatico in C#. Imparerai come popolare i modelli di Word da diversi tipi di origini dati.

In questo articolo verranno illustrati gli scenari seguenti insieme agli esempi di codice:

API di automazione di Word in C#

Useremo Aspose.Words for .NET - Un’API di automazione di Word che ti consente di generare documenti Word da zero o popolando i modelli di Word predefiniti. Puoi scaricare i binari dell’API o installarlo utilizzando uno dei seguenti metodi.

Utilizzo di Gestione pacchetti NuGet

Utilizzo della Console di gestione dei pacchetti

PM> Install-Package Aspose.Words

Genera documento Word dal modello utilizzando C# Objects

Per prima cosa, vediamo come popolare il modello di Word utilizzando gli oggetti C#. Per questo creeremo un documento Word (DOC/DOCX) con i seguenti segnaposto come contenuto del documento:

<<[sender.Name]>> says: "<<[sender.Message]>>."

Qui, il mittente è l’oggetto della seguente classe che useremo per popolare il modello.

public class Sender
{
	public string Name { get; set; }
	public string Message { get; set; }

	public Sender (string _name, string _message)
	{
		Name = _name;
		Message = _message;
	}
}

Ora utilizzeremo il motore di reporting di Aspose.Words per generare il documento Word dal modello e dall’oggetto della classe Sender seguendo i passaggi seguenti.

  • Crea un oggetto della classe Document e inizializzalo con il percorso del modello di Word.
  • Crea e inizializza un oggetto della classe Sender.
  • Istanziare la classe ReportingEngine.
  • Popolare i modelli utilizzando ReportingEngine.BuildReport() che accetta l’oggetto del documento, l’origine dati e il nome dell’origine dati come parametri.
  • Salva il documento Word generato usando il metodo Document.Save().

Nell’esempio di codice seguente viene illustrato come generare un documento di Word dal modello in C#.

Document doc = new Document("template.docx");
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, sender, "sender");
doc.Save("word.docx");

Produzione

Genera documento Word da un’origine dati XML in C#

Per generare il documento di Word da un’origine dati XML, utilizzeremo un modello di Word un po’ più complesso con i seguenti segnaposto:

<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Age)]>>

L’origine dati XML che ho utilizzato in questo esempio è riportata di seguito.

<Persons>
   <Person>
       <Name>John Doe</Name>
       <Age>30</Age>
       <Birth>1989-04-01 4:00:00 pm</Birth>
   </Person>
   <Person>
       <Name>Jane Doe</Name>
       <Age>27</Age>
       <Birth>1992-01-31 07:00:00 am</Birth>
   </Person>
   <Person>
       <Name>John Smith</Name>
       <Age>51</Age>
       <Birth>1968-03-08 1:00:00 pm</Birth>
   </Person>
</Persons>

Di seguito sono riportati i passaggi per generare un documento Word da un’origine dati XML:

  • Crea un’istanza della classe Document e inizializzala con il percorso del modello di Word.
  • Crea un’istanza della classe XmlDataSource e inizializzala con il percorso del file XML.
  • Istanziare la classe ReportingEngine.
  • Usa il metodo ReportingEngine.BuildReport() nello stesso modo in cui abbiamo usato prima per popolare il modello di Word.
  • Salva il documento Word generato utilizzando il metodo Document.Save().

Nell’esempio di codice seguente viene illustrato come generare un documento di Word da un’origine dati XML in C#.

Document doc = new Document("template.docx");
XmlDataSource dataSource = new XmlDataSource("datasource.xml");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");

Produzione

Genera documento Word da un’origine dati JSON in C#

Vediamo ora come generare un documento Word utilizzando un’origine dati JSON. In questo esempio, genereremo un elenco dei clienti raggruppati dai loro gestori. Il seguente sarebbe il modello di Word in questo caso:

<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>

La seguente sarebbe l’origine dati JSON che useremo per popolare il modello:

[
   {
       Name: "John Smith",
       Contract:
       [
           {
               Client:
               {
                   Name: "A Company"
               },
               Price: 1200000
           },
           {
               Client:
               {
                   Name: "B Ltd."
               },
               Price: 750000
           },
           {
               Client:
               {
                   Name: "C & D"
               },
               Price: 350000
           }
       ]
   },
   {
       Name: "Tony Anderson",
       Contract:
       [
           {
               Client:
               {
                   Name: "E Corp."
               },
               Price: 650000
           },
           {
               Client:
               {
                   Name: "F & Partners"
               },
               Price: 550000
           }
       ]
   },
]

Per generare il documento Word da JSON, utilizzeremo la classe JsonDataSource per caricare e utilizzare l’origine dati JSON e il resto dei passaggi rimarrà lo stesso. L’esempio di codice seguente mostra come generare un documento Word dal modello usando JSON in C#.

Document doc = new Document("template.docx");
JsonDataSource dataSource = new JsonDataSource("datasource.json");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "managers");
doc.Save("word.docx");

Produzione

Genera documento Word dall’origine dati CSV in C#

Per generare il documento Word da CSV, utilizzeremo il seguente modello di Word:

<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Column2)]>>

Il modello verrà popolato con i seguenti dati CSV:

John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm

Ora, veniamo al codice C#. Tutti i passaggi rimarranno gli stessi anche qui, ad eccezione dell’unica modifica che utilizzeremo la classe CsvDataSource per caricare i dati CSV. Nell’esempio di codice seguente viene illustrato come generare il documento di Word da un’origine dati CSV.

Document doc = new Document("template.docx");
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");

Produzione

Prova Aspose.Words per .NET gratuitamente

Puoi provare Aspose.Words per .NET usando una licenza temporanea gratuita.

Conclusione

In questo articolo hai imparato come generare documenti Word da modelli usando C#. Inoltre, hai visto come utilizzare oggetti, origini dati XML, JSON e CSV per generare documenti Word. Puoi esplorare di più sull’API di automazione di C# Word utilizzando la documentazione. Inoltre, puoi contattarci tramite il nostro forum.

Guarda anche