Postavit stůl z DataTable

Contents
[ ]

Vaše aplikace často vytáhne data z databáze a uloží je ve formě DataTable. Tyto údaje můžete snadno vložit do dokumentu jako novou tabulku a rychle použít formátování do celé tabulky.

Použití Aspose.Words, lze snadno získat data z databáze a uložit je jako tabulku:

  1. Vytvořit nový DocumentBuilder objekt na vašem Document.
  2. Spustit novou tabulku pomocí DocumentBuilder.
  3. Pokud chceme vložit jména každého z našich sloupců DataTable jako řádek záhlaví pak projede každý datový sloupec a zapíše jména sloupců do řádku v tabulce.
  4. Iterovat každý DataRow v DataTable:
    1. Iterace prostřednictvím každého objektu v DataRow.
    2. Vložit objekt do dokumentu pomocí DocumentBuilder. Použitá metoda závisí na typu vloženého objektu např. DocumentBuilder.Writeln pro text a DocumentBuilder.InsertImage pro pole byte, které představuje obrázek.
    3. Na konci zpracování DataRow Také končí řádek vytvořený DocumentBuilder použitím DocumentBuilder.EndRow.
  5. Jednou ze všech řad DataTable byly zpracovány dokončit tabulku voláním DocumentBuilder.EndTable.
  6. Konečně můžeme nastavit požadovaný styl tabulky pomocí jedné z příslušných vlastností tabulky, jako je Table.StyleIdentifier automaticky aplikovat formátování do celé tabulky.

ImportTableFromDataTable metoda přijímá a DocumentBuilder objekt, DataTable obsahující údaje a vlajku, která stanoví, zda název sloupce DataTable jsou zahrnuty v horní části stolu. Tato metoda vytváří tabulku z těchto parametrů pomocí současné polohy a formátování stavitele. Poskytuje metodu pro import dat z DataTable a vložte ji do nové tabulky pomocí DocumentBuilder.

Následující údaje v našich DataTable se používá v tomto příkladu:

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

Následující příklad kódu ukazuje, jak provést výše uvedený algoritmus v 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;
}

Metoda pak může být snadno volána pomocí vašeho DocumentBuilder a data.

Následující příklad kódu ukazuje, jak importovat data z DataTable a vložte ji do nové tabulky do dokumentu:

// 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");