Bouw een tabel van een DataTable

Contents
[ ]

Vaak zal uw toepassing halen gegevens uit een database en opslaan in de vorm van een DataTable. U kunt deze gegevens eenvoudig als nieuwe tabel in uw document invoegen en snel formatteren toepassen op de hele tabel.

Gebruik Aspose.Words, U kunt gemakkelijk gegevens uit een database ophalen en opslaan als een tabel:

  1. Een nieuw aanmaken DocumentBuilder object op uw Document.
  2. Een nieuwe tabel starten met DocumentBuilder.
  3. Als we de namen van elk van de kolommen van onze DataTable als een header rij dan itereren door elke data kolom en schrijf de kolom namen in een rij in de tabel.
  4. Itereren door elk DataRow in de DataTable:
    1. Itreer door elk object in de DataRow.
    2. Plaats het object in het document met behulp van DocumentBuilder. De gebruikte methode hangt af van het type object dat wordt ingevoegd, bijvoorbeeld DocumentBuilder.Writeln voor tekst en DocumentBuilder.InsertImage voor een bytearray die een afbeelding voorstelt.
    3. Aan het einde van de verwerking DataRow ook eindigen de rij wordt gemaakt door de DocumentBuilder door gebruik DocumentBuilder.EndRow.
  5. Zodra alle rijen van de DataTable zijn verwerkt finish de tabel door te bellen DocumentBuilder.EndTable.
  6. Tot slot kunnen we de gewenste tafel stijl met behulp van een van de juiste tabel eigenschappen zoals Table.StyleIdentifier automatisch formatteren toepassen op de gehele tabel.

De ImportTableFromDataTable methode accepteert een DocumentBuilder de DataTable met daarin de gegevens en een vlag die aangeeft of de kolom rubriek van de DataTable zijn opgenomen aan de bovenkant van de tabel. Deze methode bouwt een tabel van deze parameters met behulp van de bouwer huidige positie en opmaak. Geeft een methode om gegevens van de DataTable en plaats het in een nieuwe tabel met behulp van de DocumentBuilder.

De volgende gegevens in onze DataTable wordt gebruikt in dit voorbeeld:

how-to-build-a-table-from-a-datatable-aspose-words-net

Het volgende code voorbeeld laat zien hoe u het bovenstaande algoritme in Aspose.Words:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
/// <summary>
/// Imports the content from the specified DataTable into a new Aspose.Words Table object.
/// The table is inserted at the document builder's current position and using the current builder's formatting if any is defined.
/// </summary>
public Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable,
bool importColumnHeadings)
{
Table table = builder.StartTable();
// Check if the columns' names from the data source are to be included in a header row.
if (importColumnHeadings)
{
// Store the original values of these properties before changing them.
bool boldValue = builder.Font.Bold;
ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;
// Format the heading row with the appropriate properties.
builder.Font.Bold = true;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
// Create a new row and insert the name of each column into the first row of the table.
foreach (DataColumn column in dataTable.Columns)
{
builder.InsertCell();
builder.Writeln(column.ColumnName);
}
builder.EndRow();
// Restore the original formatting.
builder.Font.Bold = boldValue;
builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
}
foreach (DataRow dataRow in dataTable.Rows)
{
foreach (object item in dataRow.ItemArray)
{
// Insert a new cell for each object.
builder.InsertCell();
switch (item.GetType().Name)
{
case "DateTime":
// Define a custom format for dates and times.
DateTime dateTime = (DateTime) item;
builder.Write(dateTime.ToString("MMMM d, yyyy"));
break;
default:
// By default any other item will be inserted as text.
builder.Write(item.ToString());
break;
}
}
// After we insert all the data from the current record, we can end the table row.
builder.EndRow();
}
// We have finished inserting all the data from the DataTable, we can end the table.
builder.EndTable();
return table;
}

De methode kan dan gemakkelijk worden genoemd met behulp van uw DocumentBuilder en gegevens.

Het volgende voorbeeld van code laat zien hoe u de gegevens van een DataTable en plaats het in een nieuwe tabel in het document:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
// We can position where we want the table to be inserted and specify any extra formatting to the table.
DocumentBuilder builder = new DocumentBuilder(doc);
// We want to rotate the page landscape as we expect a wide table.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;
DataSet ds = new DataSet();
ds.ReadXml(MyDir + "List of people.xml");
// Retrieve the data from our data source, which is stored as a DataTable.
DataTable dataTable = ds.Tables[0];
// Build a table in the document from the data contained in the DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);
// We can apply a table style as a very quick way to apply formatting to the entire table.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;
// For our table, we want to remove the heading for the image column.
table.FirstRow.LastCell.RemoveAllChildren();
doc.Save(ArtifactsDir + "WorkingWithTables.BuildTableFromDataTable.docx");