En
Проекты Вакансии Блог

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

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

Клиент

Биотехнологическая компания.

Задача

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

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

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

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

> 40
препаратов на разных стадиях разработки
до 1-2 часов
сокращение времени разработки
4–8 часов
экономия времени разработки
6 часов
экономии на каждом импорте

Решение

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

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

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

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

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

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

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

Результат

  • Устранили дублирование логики импорта Excel в нескольких сервисах.

  • Создали единый переиспользуемый механизм для новых сценариев импорта.

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

  • Снизили количество ошибок при чтении ячеек и преобразовании типов.

  • Упростили бизнес-логику: разработчику достаточно описать модель и атрибуты.

  • Внедрили решение в нескольких сервисах внутреннего портала и стали применять его как внутренний переиспользуемый инструмент.

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

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

  • Время разработки нового импорта сократилось примерно с 1–2 рабочих дней до нескольких часов.

  • При каждом последующем использовании библиотеки экономилось в среднем 4–8 часов разработки.

  • Единая реализация снизила количество ошибок в логике импорта и преобразования данных.

  • Библиотека использовалась в нескольких сервисах, поэтому эффект распространялся на несколько команд и проектов.

  • Окупаемость: если считать вложением один день разработки библиотеки, то затраты на ее создание окупались уже после нескольких новых импортов. При условной экономии 6 часов на каждом импорте — примерно после двух использований.

Трудности

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

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

  • автоматическому определению и преобразованию типов свойств;

  • корректной обработке nullable-типов и пустых ячеек;

  • преобразованию enum и дат из разных форматов;

  • понятной обработке ошибок с указанием строки и колонки, где возникла проблема;

  • разделению обязательных и необязательных колонок;

  • проектированию интерфейса библиотеки так, чтобы для простого импорта требовался минимум кода;

  • возможности расширять библиотеку без изменения уже существующего кода.

Технологии

  • C# / .NET

  • ClosedXML — работа с Excel-файлами

  • Reflection — анализ атрибутов и свойств C#-моделей

  • Custom Attributes — описание соответствия колонок Excel свойствам модели

  • Generics — универсальный API парсинга различных моделей

  • xUnit — модульное тестирование библиотеки

Хотите узнать подробнее об услуге?
Узнать подробнее
snippet
Другие работы
Создание Android-приложения для «Major Express»
Доработка безопасности приложения «ЮMoney» для Android
Реализация новых функций и рефакторинг существующих модулей Android-приложения компании «Юрент»
Разработка цифрового продукта для российского банка
Создание приложения управления сном для компании «Аскона»
Создание единой системы авторизации для крупной российской компании
Анализ процессов крупной производственной компании
Создание Android-приложения для «Major Express»
Доработка безопасности приложения «ЮMoney» для Android
Реализация новых функций и рефакторинг существующих модулей Android-приложения компании «Юрент»
Разработка цифрового продукта для российского банка
Создание приложения управления сном для компании «Аскона»
Создание единой системы авторизации для крупной российской компании
Анализ процессов крупной производственной компании
Оставьте заявку на проект
Оставьте контакты, чтобы обсудить проект и условия сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Написать нам
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Оставьте свои контакты
SimbirSoft регулярно расширяет штат сотрудников.
Отправьте контакты, чтобы обсудить условия сотрудничества.
  • Системный аналитик (банк)
  • Golang-разработчик
  • DevOps/Build-инженер
  • Data-инженер
  • 1С-разработчик (ЗУП и БСХП)
  • Prompt-инженер
  • SRE-инженер
  • SDET Java
  • Стажер ML
  • Data Scientist RecSys
  • NLP-разработчик
  • Специалист тендерного отдела
  • Системный аналитик ЦФТ
  • Сетевой инженер/системный аналитик
  • DevOps-инженер
  • Rust разработчик Senior
  • Стажер NLP
  • ML-инженер
  • Системный аналитик (с опытом в финтех проектах)
  • Системный аналитик (Минск)
  • Аналитик-консультант 1С (БП)
Прикрепить резюме, до 10 Мб*
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Написать нам
Расскажите, какие задачи сейчас на вашем проекте.
Проконсультируем и предложим подходящих специалистов, а также сориентируем по ставкам на аутстаф.
Направление
Количество специалистов
Middle
TeamLead
Senior
TechLead
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Экспресс-консультация
Заполните все поля формы.
Эксперт свяжется с вами в течение рабочего дня.
Тематика
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Порекомендуйте друга — получите вознаграждение!
  • Системный аналитик (банк)
  • Golang-разработчик
  • DevOps/Build-инженер
  • Data-инженер
  • 1С-разработчик (ЗУП и БСХП)
  • Prompt-инженер
  • SRE-инженер
  • SDET Java
  • Стажер ML
  • Data Scientist RecSys
  • NLP-разработчик
  • Специалист тендерного отдела
  • Системный аналитик ЦФТ
  • Сетевой инженер/системный аналитик
  • DevOps-инженер
  • Rust разработчик Senior
  • Стажер NLP
  • ML-инженер
  • Системный аналитик (с опытом в финтех проектах)
  • Системный аналитик (Минск)
  • Аналитик-консультант 1С (БП)
Ваши данные
Данные кандидата
Прикрепить резюме, до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Отправить
Отправлено
Заказать демонстрацию
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.