Wstaw tabelę danych do dokumentu programu Word w języku C#

Jako programista .NET bardzo często masz do czynienia z obiektami DataTable. Szczególnie wtedy, gdy trzeba zaimportować lub wyeksportować dane z baz danych lub plików XML/JSON. Podczas programistycznego generowania dokumentów może być konieczne wstawienie danych z obiektów DataTable bezpośrednio do tabeli w dokumentach programu Word. W takich przypadkach podam idealne i najłatwiejsze rozwiązanie do wstawiania danych z DataTable do dokumentu Worda w C#.

Biblioteka C# do wstawiania tabeli danych w programie Word DOC — bezpłatne pobieranie

Aby zaimportować dane z obiektów DataTable do dokumentów Word, użyjemy Aspose.Words for .NET. Jest to bogata w funkcje biblioteka, która pozwala tworzyć i przetwarzać dokumenty MS Word. Możesz pobrać jego bibliotekę DLL lub zainstalować ją z NuGet.

Pobierz bibliotekę DLL

Zainstaluj przez NuGet

PM> Install-Package Aspose.Words

C# Wstaw tabelę danych do dokumentu programu Word — kroki

Poniżej przedstawiono kroki, które wykonamy, aby pobrać dane z DataTable i wstawić je do dokumentu Word.

  • Załaduj dane z bazy danych lub pliku danych do obiektu DataTable.
  • Utwórz nowy dokument programu Word i dodaj do niego nową tabelę.
  • Przejrzyj wiersze w DataTable i wstaw każdy wiersz do tabeli programu Word.

I to wszystko.

Przyjrzyjmy się teraz, jak przekształcić te kroki w kod C# i zaimportować DataTable do dokumentu programu Word.

Wstaw dane z DataTable do Word DOC w C#

Najpierw napiszemy metodę, która zaakceptuje DocumentBuilder do zbudowania dokumentu, DataTable posiadającą dane oraz dodatkowy parametr umożliwiający włączenie/wyłączenie importowania nagłówków kolumn. Ponadto zwraca obiekt Table.

Poniżej przedstawiono przepływ pracy tej metody.

  • Utwórz nową tabelę i pobierz jej odwołanie do obiektu Table.
  • Wstaw kolumny do tabeli zgodnie z kolumnami w DataTable.
  • Ustaw grubość czcionki, jeśli pierwszy wiersz jest przeznaczony na nagłówki.
  • Przejdź przez każdy DataRow w kolekcji DataTable.Rows.
  • Wstaw nową komórkę dla każdej wartości i odpowiednio ustaw typ danych.
  • Zwróć obiekt tabeli.

Poniżej przedstawiono implementację metody importowania danych z tabeli DataTable do tabeli w dokumencie programu Word w języku C#.

///<summary>
/// Importuje zawartość z określonej tabeli DataTable do nowego obiektu Aspose.Words Table. 
/// Tabela jest wstawiana w bieżącej pozycji konstruktora dokumentów i przy użyciu formatowania bieżącego konstruktora, jeśli jest zdefiniowane.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Sprawdź, czy nazwy kolumn ze źródła danych mają być zawarte w wierszu nagłówka.
    if (importColumnHeadings)
    {
        // Zapisz oryginalne wartości tych właściwości przed ich zmianą.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Sformatuj wiersz nagłówka z odpowiednimi właściwościami.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Utwórz nowy wiersz i wstaw nazwę każdej kolumny do pierwszego wiersza tabeli.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Przywróć oryginalne formatowanie.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Wstaw nową komórkę dla każdego obiektu.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Zdefiniuj niestandardowy format dat i godzin.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Domyślnie każdy inny element zostanie wstawiony jako tekst.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // Po wstawieniu wszystkich danych z bieżącego rekordu możemy zakończyć wiersz tabeli.
        builder.EndRow();
    }

    // Zakończyliśmy wstawianie wszystkich danych z DataTable, możemy zakończyć tabelę.
    builder.EndTable();

    return table;
}

Teraz nadszedł czas, aby wywołać tę metodę i wstawić DataTable do dokumentu programu Word.

Importuj DataTable do dokumentu Word w C#

Poniżej przedstawiono kroki importowania danych z tabeli DataTable do dokumentu programu Word w języku C#.

  • Utwórz nowy dokument programu Word (lub załaduj istniejący) przy użyciu klasy Document.
  • Wczytaj dane z bazy danych/pliku do obiektu DataTable.
  • Wywołaj metodę, którą napisaliśmy w poprzedniej sekcji i uzyskaj zwróconą tabelę.
  • Ustaw formatowanie tabeli.
  • Zapisz plik Worda metodą Document.Save().

Poniższy przykładowy kod pokazuje, jak wstawić DataTable do dokumentu programu Word w języku C#.

// Utwórz nowy dokument.
Document doc = new Document();

// Możemy ustawić miejsce, w którym chcemy wstawić tabelę, a także określić dodatkowe formatowanie
// również na stole.
DocumentBuilder builder = new DocumentBuilder(doc);

// Chcemy obrócić krajobraz strony, ponieważ oczekujemy szerokiego stołu.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

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

// Pobierz dane z naszego źródła danych, które jest przechowywane jako DataTable.
DataTable dataTable = ds.Tables[0];

// Zbuduj tabelę w dokumencie z danych zawartych w DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Możemy zastosować styl tabeli jako bardzo szybki sposób na zastosowanie formatowania do całej tabeli.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// W naszej tabeli chcemy usunąć nagłówek kolumny obrazu.
table.FirstRow.LastCell.RemoveAllChildren();

// Zapisz dokument wyjściowy.
doc.Save("Table.docx");

C# DataTable to Word Importer Library — Uzyskaj bezpłatną licencję

Możesz uzyskać darmową tymczasową licencję, aby używać Aspose.Words for .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyłeś się wstawiać dane z tabeli DataTable do dokumentu programu Word w języku C#. Możesz łatwo zintegrować przykładowy kod ze swoimi aplikacjami i importować dane bezpośrednio z bazy danych/XML/JSON do dokumentów Word za pomocą DataTable.

Biblioteka .NET Word — więcej informacji

Możesz odwiedzić dokumentację Aspose.Words for .NET, aby dowiedzieć się więcej o bibliotece. Jeśli masz jakieś pytania, daj nam znać za pośrednictwem naszego forum.

Zobacz też