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-dokument
- Steg för att infoga DataTable i Word-dokument
- Infoga data från DataTable i Word DOC
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.