Reo.Core.DataImport
10.0.30
See the version list below for details.
dotnet add package Reo.Core.DataImport --version 10.0.30
NuGet\Install-Package Reo.Core.DataImport -Version 10.0.30
<PackageReference Include="Reo.Core.DataImport" Version="10.0.30" />
<PackageVersion Include="Reo.Core.DataImport" Version="10.0.30" />
<PackageReference Include="Reo.Core.DataImport" />
paket add Reo.Core.DataImport --version 10.0.30
#r "nuget: Reo.Core.DataImport, 10.0.30"
#:package Reo.Core.DataImport@10.0.30
#addin nuget:?package=Reo.Core.DataImport&version=10.0.30
#tool nuget:?package=Reo.Core.DataImport&version=10.0.30
Reo.Core.DataImport
Описание пакета
Reo.Core.DataImport — это библиотека для импорта данных из файлов Excel и CSV с поддержкой валидации, обработки
бизнес-логики и интеграции с контейнером зависимостей (DI). Пакет решает задачи автоматизации импорта данных,
обеспечивая гибкую настройку структуры файлов, проверку обязательных полей и интеграцию с бизнес-процессами. Основные
функции:
- Поддержка форматов XLSX и CSV.
- Валидация данных с использованием FluentValidation.
- Настройка отображения колонок файлов на свойства моделей.
- Обработка ошибок импорта и генерация отчетов.
Основные компоненты
1. IPrepareDataImportService<TView>
Интерфейс для подготовки данных из файла. Реализует логику чтения, валидации и преобразования данных в объекты модели.
2. IViewDefinitionService<TView>
Сервис для определения структуры данных, отображающий колонки файла на свойства модели. Использует CellDefinition для
описания обязательных полей и заголовков.
3. CellDefinition
Класс, описывающий ячейку файла: имя заголовка и флаг обязательности. Используется для проверки заполнения полей.
4. BaseDataImportView
Базовый класс для моделей данных, содержащий методы валидации и обработки ошибок.
5. ServiceCollectionExtensions
Методы расширения для регистрации сервисов в DI-контейнере (например, AddReoDataImport).
Требования
- .NET: Совместим с .NET Standard 2.0 и выше (включая .NET 5+ и .NET Core 3.1).
- Зависимости:
- FluentValidation для валидации.
- EPPlus для работы с XLSX-файлами.
- CsvHelper для обработки CSV.
Установка
Используйте следующие команды для установки через NuGet:
Install-Package Reo.Core.DataImport
или
dotnet add package Reo.Core.DataImport
Настройка
Регистрация в ASP.NET Core
Добавьте сервисы в Startup.cs или Program.cs:
services.AddReoDataImport<MyDataView, Guid, MyViewDefinitionService, MyBusinessHandleService, MyValidator, MyPostImportHandler>(configuration);
Где:
MyDataView— модель данных, наследующаяBaseDataImportView.MyViewDefinitionService— реализацияIViewDefinitionService<MyDataView>.MyValidator— валидатор, реализующийIValidator<MyDataView>.
Конфигурационные параметры
Если требуется настраивать поведение импорта (например, путь к шаблонам файлов), добавьте параметры в
appsettings.json:
"ReoDataImport": {
"TemplatePath": "Templates/",
"MaxRowsPerFile": 10000
}
Использование
Пример 1: Подготовка данных из файла
var prepareService = serviceProvider.GetRequiredService<IPrepareDataImportService<MyDataView>>();
var result = prepareService.Prepare("path/to/file.xlsx");
if (result.IsValid)
{
Console.WriteLine("Данные успешно загружены: " + result.Data.Count + " записей.");
}
else
{
Console.WriteLine("Ошибка: " + string.Join(", ", result.Errors));
}
Пример 2: Валидация модели
public class MyValidator : AbstractValidator<MyDataView>
{
public MyValidator()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("Имя не может быть пустым.");
RuleFor(x => x.Email).EmailAddress().WithMessage("Неверный формат email.");
}
}
Пример 3: Обработка бизнес-логики
public class MyBusinessHandleService : IBusinessHandleService<MyDataView, Guid>
{
public Task HandleAsync(MyDataView data, Guid id)
{
// Реализуйте логику сохранения данных в БД или другую систему.
return Task.CompletedTask;
}
}
Лицензия
Данный пакет распространяется под лицензией MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Csv (>= 2.0.217)
- DocumentFormat.OpenXml (>= 3.4.1)
- ExcelDataReader.DataSet (>= 3.8.0)
- FluentValidation (>= 12.1.1)
- FluentValidation.AspNetCore (>= 11.3.1)
- Flurl (>= 4.0.0)
- Flurl.Http (>= 4.0.2)
- Flurl.Http.Newtonsoft (>= 0.9.1)
- Humanizer.Core (>= 3.0.1)
- Humanizer.Core.ru (>= 3.0.1)
- IdentityModel (>= 7.0.0)
- JetBrains.Annotations (>= 2025.2.4)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.2)
- Microsoft.AspNetCore.Authentication.OpenIdConnect (>= 10.0.2)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 10.0.2)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.2)
- Microsoft.Extensions.Configuration (>= 10.0.2)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.2)
- Microsoft.Extensions.DependencyInjection (>= 10.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Http.Polly (>= 10.0.2)
- Microsoft.Extensions.Logging (>= 10.0.2)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Options (>= 10.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.2)
- NEST (>= 7.17.5)
- Newtonsoft.Json (>= 13.0.4)
- Polly (>= 8.5.0)
- RedLock.net (>= 2.3.2)
- Reo.Clients.FileStorage (>= 1.0.231)
- Reo.Core.Extensions (>= 10.0.30)
- Reo.Core.Hosting (>= 10.0.30)
- stbychkov.AutoLoggerMessage (>= 1.0.15)
- Swashbuckle.AspNetCore (>= 10.1.2)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Configuration.ConfigurationManager (>= 10.0.2)
- System.IO.Abstractions (>= 22.1.0)
- System.Linq.Async (>= 7.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.41 | 24 | 2/17/2026 |
| 10.0.40 | 27 | 2/17/2026 |
| 10.0.39 | 26 | 2/17/2026 |
| 10.0.38 | 27 | 2/17/2026 |
| 10.0.37 | 41 | 2/17/2026 |
| 10.0.36 | 51 | 2/17/2026 |
| 10.0.35 | 81 | 2/16/2026 |
| 10.0.34 | 80 | 2/16/2026 |
| 10.0.33 | 84 | 2/13/2026 |
| 10.0.32 | 83 | 2/13/2026 |
| 10.0.31 | 84 | 2/13/2026 |
| 10.0.30 | 77 | 2/12/2026 |
| 10.0.29 | 80 | 2/12/2026 |
| 10.0.28 | 85 | 2/11/2026 |
| 10.0.27 | 83 | 2/11/2026 |
| 10.0.26 | 84 | 2/9/2026 |
| 10.0.25 | 83 | 2/9/2026 |
| 10.0.24 | 83 | 2/9/2026 |
| 10.0.23 | 81 | 2/9/2026 |
| 10.0.21 | 84 | 2/9/2026 |