Вопрос или проблема
У меня есть задача создать функциональность в Excel для получения и обновления данных с веб-сервиса и обратно, и мне нужно выбрать язык / инструмент для разработки этого.
Функции, которые мне нужны.
- Многопоточность
- Желательно, чтобы работало как на Mac, так и на Windows
- В идеале должно быть портативным (не обязательно)
Что я пробовал до сих пор
- VBA для Excel, однопоточный и зависает на несколько минут при больших объемах данных
- Excel-DNA работает отлично, но может работать только на Windows, или есть способ запустить его и на Mac?
- Xlwings работает хорошо, но требует некоторых установок, что делает его не портативным
Есть ли другие технологии, которые кто-то хотел бы предложить?
Веб-сайты часто содержат и другие данные, например, фотографии и т.д., которые Excel должен будет загрузить, прежде чем выбрать правильные данные. Отсюда и медлительность.
Если бы я был на вашем месте, я бы создал промежуточный веб-сервис, который бы извлекал данные, а затем Excel запрашивал бы этот веб-сервис.
Кроме того, так как веб-сервис будет или, вероятно, будет использовать, более высокий уровень с более гибким языком программирования (например, PHP) упростит процесс, так как будет больше возможностей для извлечения данных с веб-сайта и более точно.
Также, так как вы будете делать запросы между Excel и вашим веб-сервисом, можно сделать это работоспособным как для MS, так и для MacOS более простым способом.
Я создавал такой веб-сервис с нуля за несколько часов, где я извлекал данные о ценах с веб-сайтов и затем передавал их в Excel через мой веб-сервис.
Ответ или решение
Какой язык или инструмент выбрать для извлечения данных из веб-сервиса в Excel?
Если вам нужно обеспечить функциональность извлечения и обновления данных в Excel с использованием веб-сервисов, важно выбрать подходящий язык или инструмент, учитывая ваши требования и ограничения. Начнем с ваших требований и того, что вы уже попробовали.
Ключевые требования:
- Многопоточность. Это критично для обработки больших объемов данных без зависаний.
- Поддержка как Mac, так и Windows. Совместимость с обеими платформами может значительно расширить возможности использования решения.
- Желательна портативность. Хотя это не является обязательным требованием, оно остается важным фактором при учете удобства развертывания.
Анализ уже исследованных опций:
- VBA для Excel: Основным недостатком является отсутствие поддержки многопоточности, что приводит к зависаниям при обработке больших наборов данных.
- Excel-DNA: Отлично справляется с задачей на Windows, но не поддерживает Mac. Это ограничивает его использование, если нужна кроссплатформенная совместимость.
- Xlwings: Хорошо функционирует, но требует дополнительных установок, что уменьшает уровень портативности.
Рекомендации
Реализация посредника — веб-сервиса
Создание промежуточного веб-сервиса может решить многие проблемы:
- Улучшение производительности: Средний веб-сервис может эффективно обрабатывать запросы, выполнять многопоточную обработку и минимизировать нагрузку на Excel.
- Повышение гибкости: Используя такой язык программирования, как PHP, Python (например, Flask или Django), можно более точно и эффективно работать с данными.
- Кроссплатформенная совместимость: Excel будет взаимодействовать не напрямую с исходными веб-сервисами, а с вашим собственным, что обеспечит бесшовную работу как на Windows, так и на Mac.
Рекомендуемые языки и инструменты:
-
Python:
- Библиотеки, такие как
requests
для доступа к веб-сервисам иpandas
для обработки данных. - Простой и удобный в использовании фреймворк
Flask
для создания RESTful API. - Поддержка многопоточности через модули, такие как
concurrent.futures
.
- Библиотеки, такие как
-
JavaScript с Node.js:
- Природная поддержка многопоточности и событийно-ориентированная архитектура через
async/await
. - Использование пакетов, таких как
axios
для запросов к веб-сервисам иExpress.js
для создания серверных приложений.
- Природная поддержка многопоточности и событийно-ориентированная архитектура через
-
C# с ASP.NET Core:
- Если нужен более производительный вариант для Windows, поддерживает многопоточность и кроссплатформенность с последними версиями.
Итог
Оптимальное решение будет зависеть от конкретных требований вашего проекта и доступных ресурсов. Создание собственного веб-сервиса как посредника может значительно повысить производительность и надежность системы, при этом обеспечив кроссплатформенную совместимость и гибкость. Легкость масштабирования и интеграции в существующую инфраструктуру также делают этот подход весьма привлекательным.