Package Description
$ dotnet add package Reo.Core.Report.ClosedXmlПакет Reo.Core.Report.ClosedXml предоставляет функционал для генерации отчётов в формате Excel (XLSX) с использованием библиотеки ClosedXML.Report. Он позволяет создавать динамические отчёты на основе шаблонов, применять фильтры данных и работать с метаданными отчётов.
Решаемые задачи:
Microsoft.Extensions.DependencyInjection.ReportDataFilter
Базовый класс для фильтрации данных, используемый в интерфейсе IClosedXmlReportCreator.
ClosedXmlReportMetadata<TData>
Класс, содержащий метаданные отчёта: имя файла, массив байтов Excel-файла и данные отчёта (TData).
IClosedXmlReportCreator<TData, TFilter>
Интерфейс для создания отчётов. Требует реализации метода CreateAsync, который возвращает
ClosedXmlReportMetadata<TData>.
BaseXlsxClosedXmlReportCreator<TData, TFilter>
Абстрактный базовый класс, реализующий IClosedXmlReportCreator. Обеспечивает загрузку шаблонов, подготовку данных и
сохранение отчёта в поток.
ServiceCollectionExtensions
Методы расширения для регистрации сервисов в DI-контейнере. Используется для автоматической регистрации всех
IClosedXmlReportCreator<,> в сборке.
System.IO, System.Threading, System.Threading.Tasks (стандартные библиотеки .NET).Используйте следующие команды для установки пакета:
# через NuGet Package Manager
Install-Package Reo.Core.Report.ClosedXml
# через .NET CLI
dotnet add package Reo.Core.Report.ClosedXml
В ASP.NET Core или любом проекте с DI, зарегистрируйте сервисы следующим образом:
services.AddReoClosedXmlDataImport<YourAssembly>();
Замените YourAssembly на сборку, содержащую реализации IClosedXmlReportCreator<,>.
PathToTemplate): Указывается в производном классе BaseXlsxClosedXmlReportCreator.OutputFileName): Также определяется в производном классе.FallbackFont): По умолчанию "Courier New".public class MyReportFilter : ReportDataFilter
{
public string FilterValue { get; set; }
}
public class MyReportData
{
public string Title { get; set; }
public int Count { get; set; }
}
public class MyReportCreator : BaseXlsxClosedXmlReportCreator<MyReportData, MyReportFilter>
{
protected override string PathToTemplate => "Templates/MyReportTemplate.xlsx";
protected override string OutputFileName => "MyReport.xlsx";
protected override async Task<MyReportData> PrepareDataAsync(MyReportFilter filter, CancellationToken token)
{
return new MyReportData
{
Title = "Отчёт за " + filter.FilterValue,
Count = 42
};
}
}
var creator = new MyReportCreator();
var metadata = await creator.CreateAsync(new MyReportFilter { FilterValue = "2025" }, CancellationToken.None);
Данный пакет распространяется под лицензией MIT.