2 апреля 2025

Кейсы

Разработка

Аналитика и исследования

Отказ от Microsoft Excel: как заменить привычный инструмент в пересчетах бизнес-моделей компаний

Excel – это один из самых популярных инструментов от Microsoft для работы с электронными таблицами и анализа данных. Однако в текущих реалиях есть риск, что продукты Microsoft могут стать нам недоступны. Что делать, когда Excel глубоко «зашит» в ключевые процессы компании и можно ли найти оптимальную замену?

Excel для расчета экономических показателей

Многие предприятия и компании для расчетов экономических показателей и моделей традиционно использовали приложение Excel от компании Microsoft.

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

Но если этот инструмент – основа для ключевых процессов компании и серверных расчетов, то резкий отказ от сервиса может повлиять на бизнес критически. Чтобы этот риск закрыть, лучше превентивно найти аналог и запланировать переход.

Для одной из наших компаний-партнеров остро встала задача замены ядра пересчета сложной экономической модели, представленной сотнями связанных файлов формата xlsx. Важно понимать, что на основе этой системы компания принимала экономические решения и строила стратегию развития. Там лежит огромное количество входных данных, послойная модель, где все взаимосвязано. Остаться без Excel – это значит остаться вовсе без ядра расчетов.

Проблема

Если вытащить из этого «механизма» Excel – компания потеряет критически важный функционал. По условиям задачи ядро пересчета необходимо было заменить, отказавшись от использования Excel.Interop (Microsoft Excel Interop — технология, которая позволяет программно взаимодействовать с приложением Excel через COM-интерфейсы) и приложения Excel на сервере пересчета.

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

Решение

Мы подошли к задаче системно. Самое важное – это найти решение, которое позволит провести аккуратную замену ядра пересчета, и реализует пользовательские функции User-Defined Functions или UDF, встречающиеся в формулах при вычислениях модели. А значит нужно начать с исследования аналогов на рынке.

Мы проанализировали и сравнили ряд коммерческих и open-source библиотек, решающих подобные задачи. (IronXL, Aspose, EPPlus, NPOI, ClosedXML). У нас был список функций, без которых переход становится практически невозможным. Сюда относится поддержка в расчете ссылок на диапазоны данных из других файлов, возможность пересчёта формул в ячейках, работа с пользовательскими функциями. После проведения тестирований на проверку функциональности каждой библиотеки, удобства встраивания в текущее решение, корректность пересчета и производительность мы остановились на продуктах компании Aspose.

Screenshot 15

Модуль Aspose.Cells представляет огромный спектр функций для работы с книгами формата xlsx, позволяет реализовывать пользовательские функции, делать пересчет формул и имеет дополнительные преимущества:

  • Не требует установки Microsoft Office 
  • Работает в любой среде, включая контейнеры 
  • Предсказуемое поведение независимо от версии Excel 
  • Подходит для работы с большими объемами данных 
  • Поддерживает многопоточность 
  • Меньшее потребление ресурсов 
  • Стабильность при длительной работе 

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

Реализация

Библиотеку мы нашли, что дальше? Проверить библиотеку на практике, сделав прототип.

Большая часть времени ушла на перенос логики расширений Excel (Excel Add-ons) в специализированный код Aspose, реализующий логику через пользовательские функции. Пожалуй, при переходе это самый сложный этап, так как в Aspose нет явной поддержки надстроек и add-ons Excel. Повторить все функции необходимо через реализацию абстрактного класса AbstractCalculationEngine.

В итоге эксперименты с запуском расчета полной модели удались. Дополнительно получили ускорение расчета и «устойчивость к зависанию» процесса. Дело в том, что библиотека Aspose отрабатывает в том же процессе, что и серверный код, а вот Excel должен запуститься как отдельный процесс и вызывается через механизм COM-объектов. Иногда это может приводить к «зомбированию» процессов и засорению памяти сервера. Рост производительности примерно в 1.5 раза мы связываем с тем же переходом от внешнего процесса к внутрипроцессным вызовам и передаче данных.

Вывод

Отказ от привычных IT-продуктов, которые работали много лет – процесс непростой как морально, так и с точки зрения реализации. Но приходит время, когда сделать это необходимо.

В описанном кейсе первоначально казалось, что заменить ядро пересчета - крайне сложная, практически нереализуемая задача. Но декомпозировав проблему на подзадачи, уделив должное внимание исследованию, мы предложили заказчику самый оптимальный вариант замещения ядра системы. Бонусом удалось улучшить устойчивость и производительность системы расчетов бизнес-моделей.

Если вы понимаете, что в вашей системе “зашит” ненадежный продукт, пора задуматься над переходом на что-то новое. А чтобы, принять решение было легче, мы можем провести исследование и собрать прототип под ваши задачи.