Infoga DataTable i Word-dokument i C#

Som .NET-utvecklare måste du hantera DataTable-objekt väldigt ofta. Speciellt när du behöver importera eller exportera data från databaser eller XML/JSON-filer. När du genererar dokument programmatiskt kan du behöva infoga data från DataTable-objekten direkt i tabellen i Word-dokument. För sådana fall, låt mig ge dig den perfekta och enklaste lösningen för att infoga data från DataTable i ett Word-dokument i C#.

C#-bibliotek för att infoga datatabell i Word DOC - Gratis nedladdning

För att importera data från DataTable-objekt till Word-dokument kommer vi att använda Aspose.Words for .NET. Det är ett funktionsrikt bibliotek som låter dig skapa och bearbeta MS Word-dokument. Du kan antingen ladda ner dess DLL eller installera den från NuGet.

Ladda ner DLL

Installera via NuGet

PM> Install-Package Aspose.Words

C# Infoga datatabell i Word-dokument - steg

Följande är stegen som vi kommer att följa för att hämta data från en datatabell och infoga den i Word-dokumentet.

  • Ladda data från en databas eller en datafil till DataTable-objektet.
  • Skapa ett nytt Word-dokument och lägg till en ny tabell i det.
  • Gå igenom raderna i datatabellen och infoga varje rad i Words tabell.

Och det är allt.

Låt oss nu ta en titt på hur man omvandlar dessa steg till C#-koden och importerar en DataTable till ett Word-dokument.

Infoga data från DataTable i Word DOC i C#

Först kommer vi att skriva en metod som accepterar DocumentBuilder för att bygga dokumentet, DataTable har data och en ytterligare parameter för att aktivera/inaktivera import av kolumnrubriker. Dessutom returnerar den tabellobjektet.

Följande är arbetsflödet för denna metod.

  • Skapa en ny tabell och hämta dess referens till ett Table-objekt.
  • Infoga kolumner i tabellen enligt kolumnerna i DataTable.
  • Ställ in teckensnittsvikten om den första raden är för rubriker.
  • Gå igenom varje DataRow i DataTable.Rows-samlingen.
  • Infoga en ny cell för varje värde och ställ in datatypen därefter.
  • Returnera Table-objektet.

Följande är implementeringen av metoden för att importera data från en DataTable till en tabell i Word-dokument i C#.

///<summary>
/// Importerar innehållet från den angivna DataTable till ett nytt Aspose.Words Table-objekt. 
/// Tabellen infogas på den aktuella positionen för dokumentbyggaren och använder den aktuella byggarens formatering om någon är definierad.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Kontrollera om namnen på kolumnerna från datakällan ska inkluderas i en rubrikrad.
    if (importColumnHeadings)
    {
        // Lagra de ursprungliga värdena för dessa egenskaper innan du ändrar dem.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Formatera rubrikraden med lämpliga egenskaper.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Skapa en ny rad och infoga namnet på varje kolumn i den första raden i tabellen.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Återställ den ursprungliga formateringen.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Infoga en ny cell för varje objekt.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Definiera ett anpassat format för datum och tider.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Som standard kommer alla andra objekt att infogas som text.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // När vi har infogat all data från den aktuella posten kan vi avsluta tabellraden.
        builder.EndRow();
    }

    // Vi har lagt in all data från DataTable, vi kan avsluta tabellen.
    builder.EndTable();

    return table;
}

Nu är det dags att anropa den här metoden och infoga en datatabell i ett Word-dokument.

Importera datatabell till Word-dokument i C#

Följande är stegen för att importera data från DataTable till ett Word-dokument i C#.

  • Skapa ett nytt Word-dokument (eller ladda ett befintligt) med klassen Dokument.
  • Läs data från databas/fil till DataTable-objektet.
  • Ring metoden som vi har skrivit i föregående avsnitt och få den returnerade tabellen.
  • Ställ in formateringen av tabellen.
  • Spara Word-fil med metoden Document.Save().

Följande kodexempel visar hur man infogar en datatabell i ett Word-dokument i C#.

// Skapa ett nytt dokument.
Document doc = new Document();

// Vi kan placera var vi vill att tabellen ska infogas och även ange eventuell extra formatering
// appliceras även på bordet.
DocumentBuilder builder = new DocumentBuilder(doc);

// Vi vill rotera sidlandskapet eftersom vi förväntar oss en bred tabell.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

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

// Hämta data från vår datakälla som lagras som en DataTable.
DataTable dataTable = ds.Tables[0];

// Bygg en tabell i dokumentet från data som finns i DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Vi kan tillämpa en tabellstil som ett mycket snabbt sätt att tillämpa formatering på hela tabellen.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// För vår tabell vill vi ta bort rubriken för bildkolumnen.
table.FirstRow.LastCell.RemoveAllChildren();

// Spara utdatadokumentet.
doc.Save("Table.docx");

C# DataTable till Word Importer Library - Skaffa en gratis licens

Du kan få en gratis temporär licens för att använda Aspose.Words för .NET utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har du lärt dig hur du infogar data från en DataTable i ett Word-dokument i C#. Du kan enkelt integrera kodexemplet i dina applikationer och importera data direkt från databas/XML/JSON till Word-dokument med hjälp av DataTable.

.NET Word Library - Läs mer

Du kan besöka dokumentationen för Aspose.Words for .NET för att utforska mer om biblioteket. Om du har några frågor är du välkommen att meddela oss via vårt forum.

Se även