Einfügen von DataTable in ein Word Dokument in C#

Als .NET-Entwickler haben Sie sehr oft mit DataTable Objekten zu tun. Insbesondere, wenn Sie Daten aus Datenbanken oder XML/JSON Dateien importieren oder exportieren müssen. Beim programmgesteuerten Generieren von Dokumenten müssen Sie möglicherweise Daten aus den DataTable Objekten direkt in die Tabelle in Word Dokumenten einfügen. Lassen Sie mich Ihnen für solche Fälle die perfekte und einfachste Lösung zum Einfügen von Daten aus DataTable in ein Word Dokument in C# geben.

C#-Bibliothek zum Einfügen von Datentabellen in Word DOC – kostenloser Download

Um Daten aus DataTable Objekten in Word Dokumente zu importieren, verwenden wir Aspose.Words for .NET. Es ist eine funktionsreiche Bibliothek, mit der Sie MS Word Dokumente erstellen und verarbeiten können. Sie können entweder die DLL herunterladen oder von NuGet installieren.

DLL herunterladen

Installieren Sie über NuGet

PM> Install-Package Aspose.Words

C# DataTable in Word Dokument einfügen – Schritte

Im Folgenden sind die Schritte aufgeführt, die wir befolgen, um Daten aus einer DataTable abzurufen und diese in das Word Dokument einzufügen.

  • Laden Sie Daten aus einer Datenbank oder einer Datendatei in das DataTable Objekt.
  • Erstellen Sie ein neues Word Dokument und fügen Sie eine neue Tabelle hinzu.
  • Durchlaufen Sie die Zeilen in der DataTable und fügen Sie jede Zeile in die Tabelle von Word ein.

Und das ist es.

Sehen wir uns nun an, wie Sie diese Schritte in den C#-Code umwandeln und eine DataTable in ein Word Dokument importieren.

Einfügen von Daten aus DataTable in Word DOC in C#

Zuerst schreiben wir eine Methode, die den DocumentBuilder akzeptiert, um das Dokument zu erstellen, DataTable mit Daten und einen zusätzlichen Parameter, um den Import von Spaltenüberschriften zu aktivieren/deaktivieren. Außerdem gibt es das Table Objekt zurück.

Das Folgende ist der Arbeitsablauf dieser Methode.

  • Erstellen Sie eine neue Tabelle und holen Sie sich ihre Referenz in ein Table Objekt.
  • Fügen Sie Spalten gemäß den Spalten in DataTable in die Tabelle ein.
  • Legen Sie die Schriftstärke fest, wenn die erste Zeile für Überschriften vorgesehen ist.
  • Durchlaufen Sie jede DataRow in der DataTable.Rows-Auflistung.
  • Fügen Sie für jeden Wert eine neue Zelle ein und stellen Sie den Datentyp entsprechend ein.
  • Gibt das Table Objekt zurück.

Das Folgende ist die Implementierung der Methode zum Importieren von Daten aus einer DataTable in eine Tabelle in einem Word Dokument in C#.

///<summary>
/// Importiert den Inhalt aus der angegebenen DataTable in ein neues Aspose.Words-Tabellenobjekt. 
/// Die Tabelle wird an der aktuellen Position des Document Builders eingefügt und verwendet die Formatierung des aktuellen Builders, falls vorhanden.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Prüfen Sie, ob die Namen der Spalten aus der Datenquelle in eine Kopfzeile aufgenommen werden sollen.
    if (importColumnHeadings)
    {
        // Speichern Sie die ursprünglichen Werte dieser Eigenschaften, bevor Sie sie ändern.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Formatieren Sie die Überschriftenzeile mit den entsprechenden Eigenschaften.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Erstellen Sie eine neue Zeile und fügen Sie den Namen jeder Spalte in die erste Zeile der Tabelle ein.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Stellen Sie die ursprüngliche Formatierung wieder her.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Fügen Sie für jedes Objekt eine neue Zelle ein.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Definieren Sie ein benutzerdefiniertes Format für Datum und Uhrzeit.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Standardmäßig wird jedes andere Element als Text eingefügt.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // Nachdem wir alle Daten aus dem aktuellen Datensatz eingefügt haben, können wir die Tabellenzeile beenden.
        builder.EndRow();
    }

    // Wir haben alle Daten aus der DataTable eingefügt, wir können die Tabelle beenden.
    builder.EndTable();

    return table;
}

Jetzt ist es an der Zeit, diese Methode aufzurufen und eine DataTable in ein Word Dokument einzufügen.

Importieren Sie DataTable in ein Word Dokument in C#

Im Folgenden sind die Schritte zum Importieren von Daten aus der DataTable in ein Word Dokument in C# aufgeführt.

  • Erstellen Sie ein neues Word Dokument (oder laden Sie ein vorhandenes) mit der Klasse Document.
  • Daten aus Datenbank/Datei in das DataTable Objekt einlesen.
  • Rufen Sie die Methode auf, die wir im vorherigen Abschnitt geschrieben haben, und erhalten Sie die zurückgegebene Tabelle.
  • Formatierung der Tabelle festlegen.
  • Speichern Sie die Word-Datei mit der Methode Document.Save().

Das folgende Codebeispiel zeigt, wie Sie in C# eine DataTable in ein Word Dokument einfügen.

// Erstellen Sie ein neues Dokument.
Document doc = new Document();

// Wir können positionieren, wo die Tabelle eingefügt werden soll, und auch zusätzliche Formatierungen angeben
// auch auf den Tisch aufgetragen.
DocumentBuilder builder = new DocumentBuilder(doc);

// Wir möchten das Querformat der Seite drehen, da wir eine breite Tabelle erwarten.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

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

// Rufen Sie die Daten aus unserer Datenquelle ab, die als DataTable gespeichert ist.
DataTable dataTable = ds.Tables[0];

// Erstellen Sie eine Tabelle im Dokument aus den in der DataTable enthaltenen Daten.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Wir können einen Tabellenstil anwenden, um die Formatierung sehr schnell auf die gesamte Tabelle anzuwenden.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// Für unsere Tabelle wollen wir die Überschrift für die Bildspalte entfernen.
table.FirstRow.LastCell.RemoveAllChildren();

// Speichern Sie das Ausgabedokument.
doc.Save("Table.docx");

C# DataTable to Word Importer Library – Holen Sie sich eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um Aspose.Words for .NET ohne Evaluierungseinschränkungen zu verwenden.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie Daten aus einer DataTable in ein Word Dokument in C# einfügen. Sie können das Codebeispiel einfach in Ihre Anwendungen integrieren und Daten mit DataTable direkt aus Datenbank/XML/JSON in Word Dokumente importieren.

.NET-Wortbibliothek – Mehr erfahren

Sie können die Dokumentation von Aspose.Words for .NET aufrufen, um mehr über die Bibliothek zu erfahren. Falls Sie Fragen haben, können Sie uns diese gerne über unser Forum mitteilen.

Siehe auch