1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/magicodes-Magicodes.IE

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
9.Excel template export-Export textbook order form .md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 03:18 5e09f6d

Шаблон экспорта Excel — форма заказа учебников

Описание

Этот туториал объясняет, как использовать Magicodes.IE.Excel для завершения экспорта шаблона Excel формы заказа учебников.

Основные моменты

  • В этом туториале используется Magicodes.IE.Excel для завершения экспорта шаблонов Excel.
  • Нужно создать DTO для завершения экспорта.
  • Шаблоны Excel должны быть подготовлены в соответствии с требованиями.

Основные шаги

1. Установка пакета Magicodes.IE.Excel

В этом туториале мы продемонстрируем использование Excel для завершения импорта данных студентов. Для подготовленного проекта нам нужно установить следующие пакеты с помощью следующих команд:

Install-Package Magicodes.IE.Excel

2. Подготовка шаблона

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".

  • Поддержка нескольких таблиц в одной строке отсутствует (будет поддерживаться в ближайшее время, подробности см. в логах).

С учетом вышеприведенного синтаксиса, можно записать шаблон следующим образом.

Шаблон экспорта Excel

3. Создание объекта экспорта

Основной код представлен ниже.

  • Объект информации о заказе учебников

        /// <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;
            }
        }

4. Экспорт

Далее вызывается метод экспорта, обёрнутый в шаблон 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](../res/ExcelTplExport.png)

## Итог

Это завершение всего туториала по экспорту шаблона Excel. Из-за спешки есть много мест для улучшения и оптимизации.

**Связанная библиотека будет постоянно обновляться, поэтому может возникнуть небольшая разница в опыте использования данной функциональности. Пожалуйста, обратитесь к конкретному коду, версионным журналам и примерам юнит тестов.**

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/magicodes-Magicodes.IE.git
git@api.gitlife.ru:oschina-mirror/magicodes-Magicodes.IE.git
oschina-mirror
magicodes-Magicodes.IE
magicodes-Magicodes.IE
master