Авторизация
Забыли пароль?
Сброс пароля
Вернуться к авторизации

Разработка внутреннего портала для биотехнологической компании

15 сентября ‘26

Заказчик: Биотехнологическая компания.
Страница кейса/результат: https://www.simbirsoft.com/portfolio/razrabotka-vnutrennego-portala-dlya-biotekhnologicheskoy-kompanii/

Разработали внутреннюю мини-библиотеку на C# для автоматического преобразования Excel-файлов в C#-модели. Вместо ручного написания логики чтения каждой колонки разработчику достаточно было описать соответствие колонок модели с помощью атрибутов.

Агентство-исполнитель кейса

SimbirSoft

С 2001 года создаем серверные и кроссплатформенные решения для медицинских, финансовых, логистических компаний. В частности, в Backend-направлении 350+ разработчиков на проекты под ключ или усиление вашей команды. Сэкономьте до 40% на найме и содержании штатных специалистов с SimbirSoft!

1. Вводная задача от заказчика, проблематика, цели

Бизнес-задача:

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

Задача разработки:

Устранить дублирование кода и создать единый переиспользуемый механизм импорта Excel. Требовалось, чтобы для подключения нового сценария достаточно было описать C#-модель и сопоставить ее поля с колонками файла через атрибуты.

2. Описание реализации кейса и творческого пути по поиску оптимального решения

Разработчик проанализировал существующую реализацию импорта Excel в нескольких сервисах и выделил общую логику.

Спроектировал программный интерфейс (API

) библиотеки на основе атрибутов, например [ExcelColumn("Название колонки")], и реализовал механизм сопоставления колонок Excel со свойствами C#-модели.

Затем добавил автоматическое преобразование основных типов: string, числовые типы, DateTime, DateOnly, enum, nullable-типы и т.д.Также реализовал обработку обязательных и необязательных колонок, пустых ячеек и ошибок преобразования.

Добавил возможность пользовательского преобразования значений. Реализовал поддержку нескольких листов Excel.

Провел интеграцию библиотеки с несколькими существующими сервисами.

В качестве основы использовал ClosedXML, который уже применялся в проектах.

Вся первая рабочая версия библиотеки была реализована примерно за один рабочий день.

3. Результаты сотрудничества

  • Устранили дублирование логики импорта Excel в нескольких сервисах.
  • Создали единый переиспользуемый механизм для новых сценариев импорта.
  • Сократили время добавления нового импорта с нескольких дней до нескольких часов. По оценке команды, каждый последующий импорт экономил около 4–8 часов разработки.
  • Снизили количество ошибок при чтении ячеек и преобразовании типов.
  • Упростили бизнес-логику: разработчику достаточно описать модель и атрибуты.
  • Внедрили решение в нескольких сервисах внутреннего портала и стали применять его как внутренний переиспользуемый инструмент.

4. Заключение

Бизнес-эффект

Основной бизнес-эффект — снижение трудозатрат команды разработки и ускорение реализации новых сценариев импорта Excel.

  • Время разработки нового импорта сократилось примерно с 1–2 рабочих дней до нескольких часов.
  • При каждом последующем использовании библиотеки экономилось в среднем 4–8 часов разработки.
  • Единая реализация снизила количество ошибок в логике импорта и преобразования данных.
  • Библиотека использовалась в нескольких сервисах, поэтому эффект распространялся на несколько команд и проектов.
  • Окупаемость: если считать вложением один день разработки библиотеки, то затраты на ее создание окупались уже после нескольких новых импортов. При условной экономии 6 часов на каждом импорте — примерно после двух использований.

Трудности

Основная сложность заключалась не в чтении Excel, а в создании универсального механизма преобразования данных.

Особое внимание уделили:

  • автоматическому определению и преобразованию типов свойств;
  • корректной обработке nullable-типов и пустых ячеек;
  • преобразованию enum и дат из разных форматов;
  • понятной обработке ошибок с указанием строки и колонки, где возникла проблема;
  • разделению обязательных и необязательных колонок;
  • проектированию интерфейса библиотеки так, чтобы для простого импорта требовался минимум кода;
  • возможности расширять библиотеку без изменения уже существующего кода.

Технологии

  • C# / .NET
  • ClosedXML — работа с Excel-файлами
  • Reflection — анализ атрибутов и свойств C#-моделей
  • Custom Attributes — описание соответствия колонок Excel свойствам модели
  • Generics — универсальный API парсинга различных моделей
  • xUnit — модульное тестирование библиотеки

Агентство-исполнитель кейса

SimbirSoft

С 2001 года создаем серверные и кроссплатформенные решения для медицинских, финансовых, логистических компаний. В частности, в Backend-направлении 350+ разработчиков на проекты под ключ или усиление вашей команды. Сэкономьте до 40% на найме и содержании штатных специалистов с SimbirSoft!