Nabla.Export.Common 8.1.0
Weasel.Export
Небольшая библиотека для быстрого экспорта простых таблиц в формате .xlsx
Концепция
Библиотека построена на концепциях полиморфизма и наследования - заготовлено несколько паттернов экспорта, в которых некоторые механики Вы можете переопределять под свои кейсы.
Это база (знать надо)
- Основной класс -
StandartRow. Именно с ним придётся работать большую часть времени. Он содержить 2 основных компонента, которые опиысвают вашу строку:Cells- Массив данных строки (содержание ячеек)Color- Цвет строки
Интерфейсы построения заголовков:
IStandartHeaderExporterСамый простой вариант создания заголовка - переопределите метод GetHeader(). Как результат верните массив строк с текстами заголовков таблицы.ICustomHeaderExporter<T>Для чуть более сложных (в плане логики) таблиц - переопределите метод GetHeader(T model). В отличие от прошлого случая теперь для создания заголовка можно использовать дополнительные данные. Вернуть данные нужно в том же формате.
Интерфейсы построения строк:
IStandartRowExporter<T>Опять же самый базовый вариант - просто опишите как преобразовывать ваш объект типа T в массив типа object?[]. Кроме того Вам доступен параметр ref int counter - это счётчик строк который никак не влияет на механики записи в таблицу. Отсчёт идёт от 1 до N, где N - размер коллекции, которую передадите в экспортер. Счётчик инкрементируется самостоятельно (при использовании абстрактных классов - об этом далее).IOneToManyRowExporter<T>Эта схема экспорта строк нужна для случаев когда Ваш объект не всегда представляет только 1 строчку. Логика примерно та же, только теперь надо преобразовать по схеме 1 ко многим, то есть из 1 объекта Вашего типа T в коллекцию StandartRow.IManyToOneRowExporter<T>Здесь обратная ситуация - надо преобразовать из коллекции объектов типа T в 1 StandartRow Конкретный кейс - суммирующая строчка в конце таблицы.
Готовые экспортёры
Используя вышеперечисленные интерфейсы Вы можете самостоятельно создавать достаточно однотипные и понятные инструементы экспорта.
Но исходя из моей практики большая часть таблиц достаточно простые. Потому библиотека предоставляет готовые абстрактные классы, используя которые вы можете сократить количество код, пропустив написание кода взаимодействия с ClosedXML.
StandartExporter<T>- потребуется переопределитьIStandartHeaderExporter- для заголовка,IStandartRowExporter<T>- для строк таблицы.
OneToManyExporter<T>- потребуется переопределитьIStandartHeaderExporter- для заголовка,IOneToManyRowExporter<T>- для строк таблицы.
AdditionalOnEndExporter- потребуется переопределитьIStandartHeaderExporter- для заголовка,IStandartRowExporter<T>- для строк таблицы,IManyToOneRowExporter<T>- для последней суммирующей строки.
No packages depend on Nabla.Export.Common.
ClosedXML version update
.NET 8.0
- ClosedXML (>= 0.105.0)