Creare un documento Word, con una tabella, valorizzata con del testo

In questo articolo, vedremo come utilizzare Microsoft Office Word 2007, tramite il Framework 3.5 (VB.Net e C#) per la creazione di una tabella.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Introduzione:
In questo articolo, vedremo come utilizzare Word 2007, tramite il Framework 3.5, ed in particolare con i linguaggi VB.Net e C# , in ambiente Windows Application. In questo articolo viene riportata una tecnica di come creare in Microsoft Word 2007, una tabella, e dopo averla creata, valorizzare le singole celle con del testo.
Aggiunta del riferimento Word.
Dopo aver aggiunto come riferimento (progetto->aggiungi riferimento) Microsoft Word 12.0 object library,  nella pagina com, della finestra che viene aperta, passiamo in visualizzazione codice.
In alto sopra ad ogni riga di codice, inseriamo il namespace per la gestione di Microsoft Office.
Di seguito si riporta tale frammento di codice.

Nell'evento click di un pulsante (ma può essere inserito in qualsiasi altra parte)  inseriamo il codice per la creazione di un documento word, tramite l'oggetto word, application e l'oggetto word.document, mentre con gli oggetti word.range word.cell e  word.table, possiamo gestire le tabelle e le relative celle.
Qui di seguito si riporta un esempio di codice.
Conclusioni:
In questo articolo si è visto come utilizzare Microsoft Office Word 2007, tramite VB.Net e C# , in una Windows Application. Tramite la parola Download potete scaricare il file di esempio utilizzato in questo articolo.

 

Download

 

VB.Net
Imports Microsoft.Office.Core
Imports WORD = Microsoft.Office.Interop.Word
Imports System.Type

C#
using Microsoft.Office.Core;
using WORD = Microsoft.Office.Interop.Word;

 

VB.NEt
 Private Sub BtnApriWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnApriWord.Click
        Dim word As New WORD.Application()
        word.Visible = True
        'oggetto singolo documento
        Dim document As WORD.Document = word.Documents.Add(Missing, Missing, Missing, Missing)
        'creo la tabella
        Dim range As WORD.Range = document.Range(Missing, Missing)
        Dim table As WORD.Table = range.Tables.Add(range, 2, 3, Missing, Missing)
        'array con i dati
        Dim dati As String(,) = {{"EMa", "Marco", "Aurelio"}, {"EMa", "Bartoltino", "De Maffei"}}
        'Effettuo un ciclo per l'array in modo che carico la tabella
        For riga As Integer = 1 To 2
            For colonna As Integer = 1 To 3
                'creo ed imposto il valore di ogni singola cella
                Dim cell As WORD.Cell = table.Cell(riga, colonna)
                cell.Range.Text = dati(riga - 1, colonna - 1)
            Next
        Next
        'imposto la formattazione della tabella, prima riga ed i vari bordi
        table.Rows(1).Range.Bold = 1
        table.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent)
        table.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
        table.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
    End Sub

C#
 WORD.Application word = new Microsoft.Office.Interop.Word.Application();
            word.Visible = true;
            object missing = System.Type.Missing;
            //oggetto singolo documento
            WORD.Document Document = word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
            //creo la tabella
            WORD.Range range = Document.Range(ref missing, ref  missing);
            WORD.Table table = range.Tables.Add(range,   2, 3, ref missing, ref  missing);
            //array con i dati
            string[,] dati ={ { "EMa", "Marco", "Aurelio" }, { "EMa", "Bartoltino", "De Maffei" } };
            //Effettuo un ciclo per l'array in modo che carico la tabella
            for (int riga = 1; riga < 3; riga++)
            {
                for (int colonna = 1; colonna < 4; colonna++)
                {
                    //creo ed imposto il valore di ogni singola cella
                    WORD.Cell cell = table.Cell(riga, colonna);
                    cell.Range.Text = dati[riga - 1, colonna - 1];
                }
            }
            //imposto la formattazione della tabella, prima riga ed i vari bordi
            table.Rows[1].Range.Bold = 1;
            table.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent);
            table.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
            table.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;