Как разработчику .NET вам приходится очень часто иметь дело с объектами DataTable. Особенно, когда вам нужно импортировать или экспортировать данные из баз данных или файлов XML/JSON. При программном создании документов может потребоваться вставка данных из объектов DataTable непосредственно в таблицу в документах Word. Для таких случаев позвольте мне дать вам идеальное и простое решение для вставки данных из DataTable в документ Word на C#.
- Библиотека С# для вставки DataTable в документ Word
- Шаги для вставки DataTable в документ Word
- Вставить данные из DataTable в Word DOC
Библиотека C# для вставки DataTable в Word DOC — скачать бесплатно
Для импорта данных из объектов DataTable в документы Word мы будем использовать Aspose.Words for .NET. Это многофункциональная библиотека, которая позволяет создавать и обрабатывать документы MS Word. Вы можете скачать его DLL или установить из NuGet.
Скачать DLL
Установить через NuGet
PM> Install-Package Aspose.Words
C # Вставить DataTable в документ Word - шаги
Ниже приведены шаги, которые мы выполним, чтобы получить данные из DataTable и вставить их в документ Word.
- Загрузите данные из базы данных или файла данных в объект DataTable.
- Создайте новый документ Word и добавьте в него новую таблицу.
- Прокрутите строки в DataTable и вставьте каждую строку в таблицу Word.
Вот и все.
Давайте теперь посмотрим, как преобразовать эти шаги в код C# и импортировать DataTable в документ Word.
Вставить данные из DataTable в Word DOC на С#
Во-первых, мы напишем метод, который принимает DocumentBuilder для построения документа, DataTable с данными и дополнительный параметр для включения/отключения импорта заголовков столбцов. Более того, он возвращает объект Table.
Ниже приведен рабочий процесс этого метода.
- Создайте новую таблицу и получите ее ссылку в объект Table.
- Вставьте столбцы в таблицу в соответствии со столбцами в DataTable.
- Установите толщину шрифта, если первая строка предназначена для заголовков.
- Перебрать каждую DataRow в коллекции DataTable.Rows.
- Вставьте новую ячейку для каждого значения и установите соответствующий тип данных.
- Верните объект таблицы.
Ниже приведена реализация метода импорта данных из DataTable в таблицу документа Word на языке C#.
///<summary>
/// Импортирует содержимое из указанного DataTable в новый объект Aspose.Words Table.
/// Таблица вставляется в текущую позицию построителя документов и с использованием форматирования текущего построителя, если оно определено.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
Table table = builder.StartTable();
// Проверьте, должны ли имена столбцов из источника данных включаться в строку заголовка.
if (importColumnHeadings)
{
// Сохраните исходные значения этих свойств перед их изменением.
bool boldValue = builder.Font.Bold;
ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;
// Отформатируйте строку заголовка с соответствующими свойствами.
builder.Font.Bold = true;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
// Создайте новую строку и вставьте имя каждого столбца в первую строку таблицы.
foreach (DataColumn column in dataTable.Columns)
{
builder.InsertCell();
builder.Writeln(column.ColumnName);
}
builder.EndRow();
// Восстановите исходное форматирование.
builder.Font.Bold = boldValue;
builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
}
foreach (DataRow dataRow in dataTable.Rows)
{
foreach (object item in dataRow.ItemArray)
{
// Вставьте новую ячейку для каждого объекта.
builder.InsertCell();
switch (item.GetType().Name)
{
case "DateTime":
// Определите пользовательский формат для дат и времени.
DateTime dateTime = (DateTime)item;
builder.Write(dateTime.ToString("MMMM d, yyyy"));
break;
default:
// По умолчанию любой другой элемент будет вставлен как текст.
builder.Write(item.ToString());
break;
}
}
// После того, как мы вставим все данные из текущей записи, мы можем закончить строку таблицы.
builder.EndRow();
}
// Мы закончили вставлять все данные из DataTable, можно заканчивать таблицу.
builder.EndTable();
return table;
}
Теперь пришло время вызвать этот метод и вставить DataTable в документ Word.
Импорт DataTable в документ Word на С#
Ниже приведены шаги для импорта данных из DataTable в документ Word на C#.
- Создайте новый документ Word (или загрузите существующий) с помощью класса Document.
- Чтение данных из базы данных/файла в объект DataTable.
- Вызовите метод, который мы написали в предыдущем разделе, и получите возвращенную таблицу.
- Установить форматирование таблицы.
- Сохраните файл Word с помощью метода Document.Save().
В следующем примере кода показано, как вставить DataTable в документ Word на C#.
// Создайте новый документ.
Document doc = new Document();
// Мы можем поместить туда, где мы хотим, чтобы таблица была вставлена, а также указать любое дополнительное форматирование.
// также наносится на стол.
DocumentBuilder builder = new DocumentBuilder(doc);
// Мы хотим повернуть ландшафт страницы, поскольку мы ожидаем широкую таблицу.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;
DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");
// Получите данные из нашего источника данных, который хранится в виде DataTable.
DataTable dataTable = ds.Tables[0];
// Создайте таблицу в документе из данных, содержащихся в DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);
// Мы можем применить стиль таблицы как очень быстрый способ применить форматирование ко всей таблице.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;
// Для нашей таблицы мы хотим удалить заголовок для столбца изображения.
table.FirstRow.LastCell.RemoveAllChildren();
// Сохраните выходной документ.
doc.Save("Table.docx");
C# DataTable to Word Importer Library — бесплатная лицензия
Вы можете получить бесплатную временную лицензию на использование Aspose.Words for .NET без ограничений на пробную версию.
Вывод
В этой статье вы узнали, как вставлять данные из DataTable в документ Word на C#. Вы можете легко интегрировать пример кода в свои приложения и импортировать данные непосредственно из базы данных/XML/JSON в документы Word с помощью DataTable.
Библиотека слов .NET — Подробнее
Вы можете посетить документацию Aspose.Words for .NET, чтобы узнать больше о библиотеке. Если у вас возникнут какие-либо вопросы, сообщите нам об этом через наш форум.