Inserisci DataTable nel documento di Word in C#

Come sviluppatore .NET, devi gestire molto spesso gli oggetti DataTable. Soprattutto quando è necessario importare o esportare dati da database o file XML/JSON. Durante la generazione di documenti a livello di codice, potrebbe essere necessario inserire dati dagli oggetti DataTable direttamente nella tabella nei documenti di Word. Per questi casi, lascia che ti dia la soluzione perfetta e più semplice per inserire dati da DataTable in un documento Word in C#.

Libreria C# per inserire DataTable in Word DOC - Download gratuito

Per importare dati da oggetti DataTable in documenti Word, useremo Aspose.Words for .NET. È una libreria ricca di funzionalità che ti consente di creare ed elaborare documenti MS Word. Puoi scaricare la sua DLL o installarla da NuGet.

Scarica DLL

Installa tramite NuGet

PM> Install-Package Aspose.Words

C# Inserisci DataTable nel documento Word - Passaggi

Di seguito sono riportati i passaggi che seguiremo per recuperare i dati da un DataTable e inserirli nel documento di Word.

  • Carica i dati da un database o un file di dati nell’oggetto DataTable.
  • Crea un nuovo documento Word e aggiungi una nuova tabella.
  • Passa attraverso le righe nel DataTable e inserisci ogni riga nella tabella di Word.

E questo è tutto.

Diamo ora un’occhiata a come trasformare questi passaggi nel codice C# e importare un DataTable in un documento Word.

Inserisci dati da DataTable in Word DOC in C

Innanzitutto, scriveremo un metodo che accetti DocumentBuilder per creare il documento, DataTable con dati e un parametro aggiuntivo per abilitare/disabilitare l’importazione delle intestazioni di colonna. Inoltre, restituisce l’oggetto Table.

Di seguito è riportato il flusso di lavoro di questo metodo.

  • Crea una nuova tabella e ottieni il suo riferimento in un oggetto Table.
  • Inserisci le colonne nella tabella in base alle colonne in DataTable.
  • Imposta lo spessore del carattere se la prima riga è per le intestazioni.
  • Passa attraverso ogni DataRow nella raccolta DataTable.Rows.
  • Inserisci una nuova cella per ogni valore e imposta il tipo di dati di conseguenza.
  • Restituisce l’oggetto Table.

Di seguito è riportata l’implementazione del metodo per l’importazione di dati da un DataTable in una tabella nel documento di Word in C#.

///<summary>
/// Importa il contenuto dal DataTable specificato in un nuovo oggetto Aspose.Words Table. 
/// La tabella viene inserita nella posizione corrente del generatore di documenti e utilizza la formattazione del generatore corrente, se definita.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Controlla se i nomi delle colonne dall'origine dati devono essere inclusi in una riga di intestazione.
    if (importColumnHeadings)
    {
        // Memorizza i valori originali di queste proprietà prima di modificarle.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Formatta la riga di intestazione con le proprietà appropriate.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Crea una nuova riga e inserisci il nome di ogni colonna nella prima riga della tabella.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Ripristina la formattazione originale.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Inserisci una nuova cella per ogni oggetto.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Definire un formato personalizzato per date e orari.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Per impostazione predefinita qualsiasi altro elemento verrà inserito come testo.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // Dopo aver inserito tutti i dati dal record corrente, possiamo terminare la riga della tabella.
        builder.EndRow();
    }

    // Abbiamo finito di inserire tutti i dati dal DataTable, possiamo terminare la tabella.
    builder.EndTable();

    return table;
}

Ora è il momento di chiamare questo metodo e inserire un DataTable in un documento di Word.

Importa DataTable in un documento Word in C#

Di seguito sono riportati i passaggi per importare i dati dal DataTable in un documento di Word in C#.

  • Crea un nuovo documento Word (o caricane uno esistente) utilizzando la classe Document.
  • Legge i dati dal database/file nell’oggetto DataTable.
  • Chiama il metodo che abbiamo scritto nella sezione precedente e ottieni la tabella restituita.
  • Impostare la formattazione della tabella.
  • Salva il file Word usando il metodo Document.Save().

L’esempio di codice seguente mostra come inserire un oggetto DataTable in un documento di Word in C#.

// Crea un nuovo documento.
Document doc = new Document();

// Possiamo posizionare dove vogliamo che la tabella venga inserita e anche specificare eventuali formattazioni extra
// applicato anche sul tavolo.
DocumentBuilder builder = new DocumentBuilder(doc);

// Vogliamo ruotare il panorama della pagina poiché ci aspettiamo una tabella ampia.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// Recupera i dati dalla nostra origine dati che è archiviata come DataTable.
DataTable dataTable = ds.Tables[0];

// Crea una tabella nel documento dai dati contenuti nel DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Possiamo applicare uno stile di tabella come un modo molto rapido per applicare la formattazione all'intera tabella.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// Per la nostra tabella vogliamo rimuovere l'intestazione per la colonna dell'immagine.
table.FirstRow.LastCell.RemoveAllChildren();

// Salva il documento di output.
doc.Save("Table.docx");

C# DataTable to Word Importer Library - Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.Words for .NET senza limiti di valutazione.

Conclusione

In questo articolo si è appreso come inserire dati da un DataTable in un documento di Word in C#. Puoi facilmente integrare l’esempio di codice nelle tue applicazioni e importare i dati direttamente da database/XML/JSON in documenti Word utilizzando DataTable.

Libreria di parole .NET - Ulteriori informazioni

Puoi visitare la documentazione di Aspose.Words for .NET per saperne di più sulla libreria. In caso di domande, non esitare a farcelo sapere tramite il nostro forum.

Guarda anche