Vložit DataTable do dokumentu Word v C#

Jako vývojář .NET se musíte s objekty DataTable potýkat velmi často. Zejména, když potřebujete importovat nebo exportovat data z databází nebo souborů XML/JSON. Při programovém generování dokumentů může být nutné vložit data z objektů DataTable přímo do tabulky v dokumentech aplikace Word. Pro takové případy mi dovolte, abych vám poskytl dokonalé a nejjednodušší řešení pro vkládání dat z DataTable do dokumentu aplikace Word v C#.

Knihovna C# pro vložení DataTable do Wordu DOC – ke stažení zdarma

Pro import dat z objektů DataTable do dokumentů aplikace Word použijeme Aspose.Words for .NET. Je to knihovna bohatá na funkce, která vám umožní vytvářet a zpracovávat dokumenty MS Word. Můžete si stáhnout jeho DLL nebo nainstalovat z NuGet.

Stáhněte si DLL

Nainstalujte přes NuGet

PM> Install-Package Aspose.Words

C# Vložit DataTable do dokumentu aplikace Word - kroky

Následují kroky, které budeme dodržovat, abychom načetli data z DataTable a vložili je do dokumentu aplikace Word.

  • Načtěte data z databáze nebo datového souboru do objektu DataTable.
  • Vytvořte nový dokument aplikace Word a přidejte do něj novou tabulku.
  • Procházejte řádky v DataTable a vložte každý řádek do tabulky aplikace Word.

A to je vše.

Pojďme se nyní podívat na to, jak převést tyto kroky do kódu C# a importovat DataTable do dokumentu Word.

Vložit data z DataTable do Word DOC v C#

Nejprve napíšeme metodu, která akceptuje DocumentBuilder pro sestavení dokumentu, DataTable s daty a další parametr pro povolení/zakázání importu záhlaví sloupců. Navíc vrátí objekt Table.

Následuje pracovní postup této metody.

  • Vytvořte novou tabulku a získejte její odkaz do objektu Table.
  • Vložte do tabulky sloupce podle sloupců v DataTable.
  • Nastavte tloušťku písma, pokud je první řádek pro nadpisy.
  • Projděte každý DataRow v kolekci DataTable.Rows.
  • Pro každou hodnotu vložte novou buňku a podle toho nastavte datový typ.
  • Vraťte objekt Table.

Následuje implementace metody pro import dat z DataTable do tabulky v dokumentu Word v C#.

///<summary>
/// Importuje obsah ze zadaného DataTable do nového objektu Aspose.Words Table. 
/// Tabulka se vloží na aktuální pozici tvůrce dokumentů a použije formátování aktuálního tvůrce, pokud je nějaké definováno.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Zkontrolujte, zda mají být v řádku záhlaví zahrnuty názvy sloupců ze zdroje dat.
    if (importColumnHeadings)
    {
        // Před změnou uložte původní hodnoty těchto vlastností.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Naformátujte řádek záhlaví s příslušnými vlastnostmi.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Vytvořte nový řádek a vložte název každého sloupce do prvního řádku tabulky.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Obnovte původní formátování.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Pro každý objekt vložte novou buňku.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Definujte vlastní formát pro data a časy.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Ve výchozím nastavení bude jakákoli jiná položka vložena jako text.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // Po vložení všech dat z aktuálního záznamu můžeme řádek tabulky ukončit.
        builder.EndRow();
    }

    // Dokončili jsme vkládání všech dat z DataTable, můžeme tabulku ukončit.
    builder.EndTable();

    return table;
}

Nyní je čas zavolat tuto metodu a vložit DataTable do dokumentu aplikace Word.

Import DataTable do dokumentu Word v C#

Následují kroky k importu dat z DataTable do dokumentu aplikace Word v C#.

  • Vytvořte nový dokument aplikace Word (nebo načtěte existující) pomocí třídy Document.
  • Načíst data z databáze/souboru do objektu DataTable.
  • Zavolejte metodu, kterou jsme napsali v předchozí části, a získejte vrácenou tabulku.
  • Nastavte formátování tabulky.
  • Uložte soubor aplikace Word pomocí metody Document.Save().

Následující ukázka kódu ukazuje, jak vložit DataTable do dokumentu aplikace Word v C#.

// Vytvořte nový dokument.
Document doc = new Document();

// Můžeme umístit, kam chceme tabulku vložit, a také zadat jakékoli další formátování
// aplikované i na stůl.
DocumentBuilder builder = new DocumentBuilder(doc);

// Chceme otočit na šířku stránky, jak očekáváme širokou tabulku.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

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

// Získejte data z našeho zdroje dat, který je uložen jako DataTable.
DataTable dataTable = ds.Tables[0];

// Vytvořte tabulku v dokumentu z dat obsažených v DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Můžeme použít styl tabulky jako velmi rychlý způsob, jak aplikovat formátování na celou tabulku.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// Pro naši tabulku chceme odstranit záhlaví sloupce obrázku.
table.FirstRow.LastCell.RemoveAllChildren();

// Uložte výstupní dokument.
doc.Save("Table.docx");

Knihovna C# DataTable to Word Importer – získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci k používání Aspose.Words pro .NET bez omezení hodnocení.

Závěr

V tomto článku jste se naučili, jak vložit data z DataTable do dokumentu aplikace Word v C#. Ukázku kódu můžete snadno integrovat do svých aplikací a importovat data přímo z databáze/XML/JSON do dokumentů aplikace Word pomocí DataTable.

.NET Word Library – Přečtěte si více

Můžete navštívit dokumentaci Aspose.Words for .NET a prozkoumat více o knihovně. V případě jakýchkoli dotazů nás neváhejte kontaktovat prostřednictvím našeho fóra.

Viz také