Этот туториал объясняет, как использовать Magicodes.IE.Excel для завершения экспорта шаблона Excel формы заказа учебников.
В этом туториале мы продемонстрируем использование Excel для завершения импорта данных студентов. Для подготовленного проекта нам нужно установить следующие пакеты с помощью следующих команд:
Install-Package Magicodes.IE.Excel
Magicodes.IE.Excel поддерживает экспорт шаблонов с рендерингом ячеек и таблиц.
Рендеринг ячеек
Грамматика:
{{Company}} (Название школы) Заказ учебников весной 2020 года
{{Table>>BookInfos|RowNo}} //Начало рендера таблицы
{{Remark|>>Table}}//Конец рендера таблицы
{{Image::ImageUrl?Width=50&Height=120&Alt=404}} //Рендеринг изображения
{{Image::ImageUrl?w=50&h=120&Alt=404}} //Рендеринг изображения
{{Image::ImageUrl?Alt=404}} //Рендеринг изображения
{{Image::ImgUrl?w=50&h=50&XOffset=100&YOffset=100}}
Внимание:
Рендеринг таблицы
RowNo | № | Наименование | Главный редактор | Издательство | Цена | Количество закупки | Примечания |
---|---|---|---|---|---|---|---|
{{Table>>BookInfos|RowNo}} | {{№}} | {{Наименование}} | {{ГлавныйРедактор}} | {{Издательство}} | {{Цена}} | {{КоличествоЗакупки}} | {{Примечания|>>Table}} |
Формат рендера таблицы указан выше:
Синтаксис рендера начинается со строки "Table>>BookInfos|", где "BookInfos" является свойством списка
"RowNo", "№", и т.д. являются всеми полями списка
Должен оканчиваться на "|>>Table".
Поддержка нескольких таблиц в одной строке отсутствует (будет поддерживаться в ближайшее время, подробности см. в логах).
С учетом вышеприведенного синтаксиса, можно записать шаблон следующим образом.
Основной код представлен ниже.
Объект информации о заказе учебников
/// <summary>
/// Информация о заказе учебников
/// </summary>
public class TextbookOrderInfo
{
/// <summary>
/// Название компании
/// </summary>
public string Company { get; }
/// <summary>
/// Адрес
/// </summary>
public string Address { get; }
/// <summary>
/// Контактное лицо
/// </summary>
public string Contact { get; }
/// <summary>
/// Телефон
/// </summary>
public string Tel { get; }
/// <summary>
/// Автор таблицы
/// </summary>
public string Watchmaker { get; }
/// <summary>
/// Время
/// </summary>
public string Time { get; }
/// <summary>
/// Список информации о книгах
/// </summary>
public List<BookInfo> BookInfos { get; }
public TextbookOrderInfo(string company, string address, string contact, string tel, string watchmaker, string time, List<BookInfo> bookInfo)
{
Company = company;
Address = address;
Contact = contact;
Tel = tel;
Watchmaker = watchmaker;
Time = time;
BookInfos = bookInfo;
}
}
Как показано в приведённом выше коде, определенная структура основана на шаблоне. Одно из свойств BookInfos представляет собой список, как показано ниже.
Объект информации о книге:
/// <summary>
/// Информация о книге
/// </summary>
public class BookInfo
{
/// <summary>
/// Номер строки
/// </summary>
public int RowNo { get; }
/// <summary>
/// Номер книги
/// </summary>
public string No { get; }
/// <summary>
/// Название книги
/// </summary>
public string Name { get; }
/// <summary>
/// Главный редактор
/// </summary>
public string EditorInChief { get; }
/// <summary>
/// Издательство
/// </summary>
public string PublishingHouse { get; }
/// <summary>
/// Цена
/// </summary>
public string Price { get; }
/// <summary>
/// Количество закупки
/// </summary>
public int PurchaseQuantity { get; }
/// <summary>
/// Примечания
/// </summary>
public string Remark { get; }
public BookInfo(int rowNo, string no, string name, string editorInChief, string publishingHouse, string price, int purchaseQuantity, string remark)
{
RowNo = rowNo;
No = no;
Name = name;
EditorInChief = editorInChief;
PublishingHouse = publishingHouse;
Price = price;
PurchaseQuantity = purchaseQuantity;
Remark = remark;
}
}
Далее вызывается метод экспорта, обёрнутый в шаблон Excel, реализованный из интерфейса IExportFileByTemplate:
/// <summary>
/// Экспорт файла по шаблону
/// </summary>
public interface IExportFileByTemplate
{
/// <summary>
/// Экспорт по шаблону
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fileName"></param>
/// <param name="data"></param>
/// <param name="template">HTML шаблон или путь до шаблона</param>
/// <returns></returns>
Task<ExportFileInfo> ExportByTemplate<T>(string fileName, T data,
string template) where T : class;
}
С использованием вышеописанного метода ExportByTemplate можно выполнить экспорт шаблона Excel. Конкретное применение можно найти в следующих юнит тестах.```c# [Fact(DisplayName = "Пример экспорта шаблона Excel для формы заказа учебников за весну 2020 года")] public async Task ExportByTemplate_Test() { // Путь до шаблона var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates", "Sample_Order_Form_for_Spring_2020_Teaching_Materials.xlsx"); // Создание объектов экспорта Excel IExportFileByTemplate exporter = new ExcelExporter(); // Путь до экспорта var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(ExportByTemplate_Test) + ".xlsx"); if (File.Exists(filePath)) File.Delete(filePath); // Экспорт по шаблону await exporter.ExportByTemplate(filePath, new TextbookOrderInfo("Hunan Xinlai Information Technology Co.", "Hunan Changsha Yuelu District", "Snow Goose", "1367197xxxx", "Snow Goose", DateTime.Now.ToLongDateString(), new List() { new BookInfo(1, "0000000001", "«От начала до конца»", "Tom", "China Machine Press", "3.14", 100, "Примечания"), new BookInfo(2, "0000000002", "«От начала до конца»", "Tom", "China Machine Press", "3.14", 100, "Примечания"), new BookInfo(3, "0000000003", "«От начала до конца»", "Tom", "China Machine Press", "3.14", 100, "Примечания") }), tplPath); }
Результаты представлены на следующем рисунке:

## Итог
Это завершение всего туториала по экспорту шаблона Excel. Из-за спешки есть много мест для улучшения и оптимизации.
**Связанная библиотека будет постоянно обновляться, поэтому может возникнуть небольшая разница в опыте использования данной функциональности. Пожалуйста, обратитесь к конкретному коду, версионным журналам и примерам юнит тестов.**
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )