Постройте стол из DataTable

Contents
[ ]

Часто ваше приложение будет извлекать данные из базы данных и хранить их в виде DataTable. Вы можете легко вставить эти данные в документ в виде новой таблицы и быстро применить форматирование ко всей таблице.

Использовать Aspose.Words, Вы можете легко получить данные из базы данных и хранить их в виде таблицы:

  1. Создать новый DocumentBuilder объект на вашем Document.
  2. Начните новый стол, используя DocumentBuilder.
  3. Если мы хотим вставить имена каждой из колонок из нашего DataTable Затем в виде строки заголовка пройдите через каждый столбец данных и запишите имена столбцов в строку в таблице.
  4. Итерировать через каждый DataRow в DataTable:
    1. итерировать через каждый объект в DataRow.
    2. Вставить объект в документ с использованием DocumentBuilder. Используемый метод зависит от типа вставляемого объекта например DocumentBuilder.Writeln для текста и DocumentBuilder.InsertImage для байтового массива, который представляет собой изображение. 1.По окончании обработки DataRow Заканчивается также строка, создаваемая DocumentBuilder используя DocumentBuilder.EndRow.
  5. Когда-то все ряды из DataTable были обработаны закончить стол, позвонив DocumentBuilder.EndTable.
  6. Наконец, мы можем установить желаемый стиль таблицы, используя одно из соответствующих свойств таблицы. Table.StyleIdentifier автоматически применять форматирование ко всей таблице.

The ImportTableFromDataTable Метод принимает a DocumentBuilder объект, DataTable содержит данные и флаг, который указывает, идет ли колонка от DataTable Они включены в верхней части стола. Этот метод создает таблицу из этих параметров, используя текущее положение и форматирование строителя. Предоставляет способ импорта данных из DataTable и вставить его в новую таблицу с помощью конструктора документов.

Следующие данные в нашей DataTable Используется в этом примере:

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

Следующий пример кода показывает, как выполнить вышеуказанный алгоритм в 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;
}

Этот метод можно легко назвать с помощью DocumentBuilder и данные.

Следующий пример кода показывает, как импортировать данные из DataTable и включить его в новую таблицу в документе:

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