В современном мире разработки приложений часто возникает необходимость работы с документами Excel. Чаще всего это различного рода отчеты, но иногда в качестве хранилища данных используются файлы xls/x. Например, если пользователю необходимо иметь возможность загружать данные в приложение или выгружать их в удобочитаемой форме, Excel является фактическим стандартом.
Относительно дружелюбный интерфейс, прозрачная структура вкупе с ее распространённостью.
лучшее решение навскидку сложно назвать.
Однако многие Excel все еще связан чем-то тяжелым, неповоротливым и сложным.
Давайте посмотрим, как мы, обычные разработчики C#, можем легко создать простой документ Excel, на примере табличного отчета.
Историческая справка
Времена, когда доминировал собственный формат .xls (двоичный формат файла Excel), давно прошли, и теперь у нас есть только .
xlsx (книга Excel) в рамках структуры Office Open XML. Последний представляет собой обычный ZIP-архив с XML-файлами.
Мы не будем углубляться в его структуру; Я искренне надеюсь, что оно вам никогда не понадобится.
На github и не только можно найти ряд библиотек , бесплатно и многое другое.
Пожалуй, самым популярным является EPPlus. В определенной степени он достаточно хорошо отражает концепцию Excel, поэтому я всегда использую EPPlus. Версия 4 полностью бесплатна, начиная с версии 5 вам потребуется приобрести лицензию для коммерческого использования.
Задача
Так, предполагать , менеджера по продукту поразила мысль, что возможность скачать определенный отчет в формате Excel увеличит количество пользователей на 100500%.Менеджер проекта решает выпустить эту убойную функцию в качестве исправления прямо сегодня — ведь это занимает всего пару часов работы.
Сам по себе отчет содержит краткое описание компании и историю изменения отдельных экономических показателей.
Для простоты все свойства компании являются строками.
Экономические индикаторы — большие целые числа и числа с плавающей запятой, а также даты.
Предположим, что где-то в недрах микросервисного бэкенда есть генератор сервисов таких отчетов, например, по идентификатору компании.
Однако, поскольку нет смысла отображать идентификатор пользователю, идентификатор не включается в саму модель отчета.
Аналитик, в свою очередь, выдает задачу с феноменально точным описанием — «Сформировать отчет Excel на основе базы данных MarketReport».
Ну и для нашего примера создадим заглушку — генератор фейковые данные:
Первый старт
Подключим EPPlus версии 4.5.3.3 и создадим базовую обвязку будущего генератора.
Сердцем генератора будет метод Generate. ExcelPackage — это модель документа, посредством которой мы будем осуществлять все взаимодействия с ним.
Также имеется конструктор для передачи пути к файлу или потоку.
Основной метод создает генератор отчетов, а также генератор файлов Excel. Далее полученный файл просто записывается на диск.
При попытке запустить приложение , мы получаем исключение:
Правильно, документ Excel не может существовать без страниц; должен быть хотя бы один.InvalidOperationException: The workbook must contain at least one worksheet
Добавим, все интуитивно понятно: var sheet = package.Workbook.Worksheets
Теги: #программирование #C++ #.
NET #Excel #epplus
-
Немного О Шефе 0.9
19 Oct, 24 -
Умная Ручка-Навигатор
19 Oct, 24 -
Мирная Зелень
19 Oct, 24