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

OSCHINA-MIRROR/magicodes-Magicodes.IE

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
2.Basic tutorial of export Excel.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 03:18 5e09f6d

Базовый учебник экспорта в Excel

Описание

Этот учебник объясняет, как выполнить экспорт данных студентов в Excel с помощью библиотеки Magicodes.

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

  • Возможности экспорта
  • Как экспортировать заголовки таблиц Excel
  • Как экспортировать данные, выполнять срезы данных и использовать фильтры
  • Поддержка динамического экспорта типа Dynamic/ExpandoObject

Возможности экспорта

ЭкспортАтрибут

  • Имя: Имя (текущее имя листа)
  • HeaderFontSize: Размер шрифта заголовков
  • FontSize: Размер шрифта основной части
  • MaxRowNumberOnASheet: Максимальное количество строк на одном листе, после установки нескольких листов будут выведены.
  • TableStyle: Стиль таблицы
  • AutoFitAllColumn: bool Адаптивность всех колонок
  • Автор: Автор
  • ExporterHeaderFilter: Фильтр заголовков
  • AutoCenter: Установка центрирования всей таблицы

ЭкспортХедерАтрибут

  • DisplayName: Отображаемое имя
  • FontSize: Размер шрифта
  • IsBold: Жирный или нет
  • Формат: Форматирование
  • IsAutoFit: Адаптивность или нет
  • IsIgnore: Пропустить или нет
  • AutoCenterColumn: Установка центрирования колонки

IEIgnoreАтрибут

Работает со свойствами и членами перечислений.

  • IsImportIgnore: Пропуск импорта, значение по умолчанию - true
  • IsExportIgnore: Пропуск экспорта, значение по умолчанию - true

ДескрипшнАтрибут

  • Описание: Аннотация импорта/экспорта листа

ДисплейФорматАтрибут

  • DataFormatString: Формат отображения данных

ДисплейАтрибут

  • Название
    • Импорт/экспорт отображаемых названий столбцов (свойства)
  • Порядок
    • Индекс столбца
  • Описание
    • Описание столбца

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

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

Install-Package Magicodes.IE.Excel

2. Экспорт заголовков таблиц Excel

  • Экспорт через массивы
public async Task ExportHeader()
{
    IExcelExporter exporter = new ExcelExporter();

    var filePath = "h.xlsx";
    var arr = new[] { "Name1", "Name2", "Name3", "Name4", "Name5", "Name6" };
    var sheetName = "Test";
    var result = await exporter.ExportHeaderAsByteArray(arr, sheetName);
    result.ToExcelExportFileInfo(filePath);
}
  • Экспорт через DTO
public async Task ExportHeader()
{
    IExporter exporter = new ExcelExporter();

    var filePath = "h.xlsx";
    var result = await exporter.ExportHeaderAsByteArray<Student>(new Student());
    result.ToExcelExportFileInfo(filePath);
}

Базовый учебник экспорта Excel-2

3. Экспорт Excel

  • Базовый экспорт
public class Student
{
    /// <summary>
    ///     Имя
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    ///     Возраст
    /// </summary>
    public int Age { get; set; }
}

public async Task Export()
{
    IExporter exporter = new ExcelExporter();
    var result = await exporter.Export("a.xlsx", new List<Student>()
    {
        new Student
        {
            Name = "Мистер А",
            Age = 18
        },
        new Student
        {
            Name = "Мистер Б",
            Age = 19
        },
        new Student
        {
            Name = "Мистер В",
            Age = 20
        }
    });
}

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

Базовый учебник экспорта Excel-1

  • Пример экспорта с возможностями
public async Task Export()
{
    IExporter exporter = new ExcelExporter();
    var result = await exporter.Export("test.xlsx", new List<Student>()
    {
        new Student
        {
            Name = "Мистер А",
            Age = 18,
            Remarks = "Меня зовут Мистер А, мне 18 лет",
            Birthday = DateTime.Now
        },
        new Student
        {
            Name = "Мистер Б",
            Age = 19,
            Remarks = "Меня зовут Мистер Б, мне 19 лет",
            Birthday = DateTime.Now
        },
        new Student
        {
            Name = "Мистер C",
            Age = 20,
            Remarks = "Меня зовут Мистер C, мне 20 лет",
            Birthday = DateTime.Now
        }
    });
}

/// <summary>
///     Информация о студентах
/// </summary>
[ExcelExporter(Name = "Студенты", TableStyle = "Light10", AutoFitAllColumn = true, MaxRowNumberOnASheet = 2)]
public class Student
{
    /// <summary>
    ///     Имя
    /// </summary>
    [ExporterHeader(DisplayName = "Имя")]
    public string Name { get; set; }
    /// <summary>
    ///     Возраст
    /// </summary>
    [ExporterHeader(DisplayName = "Возраст")]
    public int Age { get; set; }
    /// <summary>
    ///     Примечание
    /// </summary>
    public string Remarks { get; set; }
    /// <summary>
    ///     Дата рождения
    /// </summary>
    [ExporterHeader(DisplayName = "Дата рождения", Format = "yyyy-MM-dd")]
    public DateTime Birthday { get; set; }
}

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

Базовый учебник экспорта Excel-2

  1. ЭкспортЭкспортАтрибут может устанавливать параметры экспорта, такие как макет таблицы, имя листа, адаптивность колонок и т.д. Подробнее см. возможности экспорта
  2. ЭкспортХедерАтрибут может устанавливать имя заголовков таблицы, стиль и т.д. Подробнее см. возможности экспорта
  3. ЭкспортЭкспортАтрибут MaxRowNumberOnASheet может делить данные, указывать длину данных листа этим свойством для достижения автоматической срезки
  • Фильтр заголовков таблиц
/// <summary>
///     Информация о студентах
/// </summary>
[ExcelExporter(Name = "Студенты", TableStyle = "Light10", AutoFitAllColumn = true, MaxRowNumberOnASheet = 2, ExporterHeaderFilter = typeof(ExporterStudentHeaderFilter))]
public class Student
{
    /// <summary>
    ///     Имя
    /// </summary>
    [ExporterHeader(DisplayName = "Имя")]
    public string Name { get; set; }
    /// <summary>
    ///     Возраст
    /// </summary>
    [ExporterHeader(DisplayName = "Возраст", Format = "#,##0")]
    public int Age { get; set; }
    /// <summary>
    ///     Примечание
    /// </summary>
    public string Remarks { get; set; }
}

public class ExporterStudentHeaderFilter : IExporterHeaderFilter
{
    /// <summary>
    /// Фильтр заголовков (изменение имени)
    /// </summary>
    /// <param name="exporterHeaderInfo"></param>
    /// <returns></returns>
    public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo)
    {
        if (exporterHeaderInfo.DisplayName.Equals("Имя"))
        {
            exporterHeaderInfo.DisplayName = "name";
        }
        return exporterHeaderInfo;
    }
}

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

4. Динамический экспорт

class Program
{
    static async Task Main(string[] args)
    {
        IExporter exporter = new ExcelExporter();
        // Генерация тестовых данных
        var personList = GenFu.GenFu.ListOf<Person>();

        // Экспорт одного файла, содержащего только "FirstName", "LastName" столбцы
        string fields = "FirstName,LastName"; // Можно настроить желаемые поля для экспорта
        var expandoObjectList = new List<ExpandoObject>(personList.Count);
        var propertyInfoList = new List<PropertyInfo>();
        var fieldsAfterSplit = fields.Split(',');
``````csharp
foreach (var field in fieldsAfterSplit)
{
    var propertyName = field.Trim();
    var propertyInfo = typeof(Person).GetProperty(propertyName);

    if (propertyInfo == null)
    {
        throw new Exception($"Свойство: {propertyName} не найдено в типе: {typeof(Person)}");
    }

    propertyInfoList.Add(propertyInfo);
}

foreach (var person in personList)
{
    var shapedObj = new ExpandoObject();

    foreach (var propertyInfo in propertyInfoList)
    {
        var propertyValue = propertyInfo.GetValue(person);
        ((IDictionary<string, object>)shapedObj).Add(propertyInfo.Name, propertyValue);
    }

    expandoObjectList.Add(shapedObj);
}

string filePath = Path.Combine(Directory.GetCurrentDirectory(), "dynamicExportExcel.xlsx");
var result = await exporter.ExportAsByteArray<ExpandoObject>(expandoObjectList);
File.WriteAllBytes(filePath, result);
}
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Title { get; set; }
    public int Age { get; set; }
    public int NumberOfKids { get; set; }
}

С помощью приведённого выше кода можно экспортировать данные в Excel следующим образом:

Основной учебник - Экспорт Excel - Поддержка динамических типов

5. Указание значений отображения для Enum и bool типов

[ValueMapping(text: "да", value: true)]
[ValueMapping(text: "нет", value: false)]
[ValueMapping(text: "микро-клиент", value: 0)]

Опубликовать ( 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