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

OSCHINA-MIRROR/magicodes-Magicodes.IE

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

Динамическое экспортирование заголовков таблиц

Следующий фрагмент кода позволяет нам экспортировать заголовок таблицы в Excel; мы можем передать его как массив для генерации нашего динамического заголовка таблицы, а также вызвать метод exporter.ExportHeaderAsByteArray, чтобы экспортировать наш результат типа byte[] в указанный путь файла (filepath).

public async Task ExportHeaderAsByteArrayWithItems_Test()
{
    IExcelExporter exporter = new ExcelExporter();
    var arr = new[] { "Name1", "Name2", "Name3", "Name4", "Name5", "Name6" };
    var sheetName = "Test";
    var result = await exporter.ExportHeaderAsByteArray(arr, sheetName);
    
    result.ToExcelExportFileInfo(filePath);
}

Экспорт DataTable с динамическими данными

В этом экспорте exportDatas является списком типов (List<T>), но в следующем фрагменте кода мы преобразовали его в объект DataTable и экспортировали. Число строк на каждом листе задается параметром maxRowNumberOnASheet.

public async Task LargeDataDynamicExport_Test()
{
    IExcelExporter exporter = new ExcelExporter();
   
    var dt = new DataTable();
    // Создаем столбцы с названиями колонок и типами данных
    dt.Columns.Add("Text", typeof(string));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Number", typeof(decimal));
    dt = EntityToDataTable(dt, exportDatas);

    var result = await exporter.Export(filePath, dt, maxRowNumberOnASheet: 100000);
}

Экспорт ExpandoObject

ExpandoObject — это динамический объект, являющийся частью языка программирования Dynamic Language Runtime (DLR). С помощью ExpandoObject можно добавлять и удалять члены его экземпляров во время выполнения, а также устанавливать и получать значения этих членов. В нашем случае поддерживается использование ExpandoObject, поэтому здесь мы используем этот объект для реализации поведения динамического экспорта.

public async Task ExportAsByteArraySupportDynamicType_Test()
{
    IExporter exporter = new ExcelExporter();
    
    var source = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>();
    string fields = "text,number,name";
    var shapedData = source.ShapeData(fields) as ICollection<ExpandoObject>;

    var result = await exporter.ExportAsByteArray<ExpandoObject>(shapedData);
    File.WriteAllBytes(filePath, result);
}

Кроме того, для процесса экспорта ExpandoObject заголовков таблиц и других данных вы можете использовать фильтры для достижения желаемого результата. Подробнее см. руководство по использованию фильтров.

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