Нет никаких «заказчиков», никто не собирается ничего править в таблицах.
Есть заранее данные файлы Excel, содержащие расчеты. Запустили — подставили данные — считали результат. Таких файлов сотни. Подставлять в них данные нужно сотни и тысячи раз в день.
Никакая «вёрстка» на PHP не справится с задачей «Запустить файл с макросами».
Вполне себе нормально «гоняется параллельно». Более того, внутри одного Application спокойно открываются несколько независимых Workbooks. Правда, нам это не требовалось.
Создано веб-приложение, которое имеет API.
По запросу это приложение открывает нужный файл (а точнее, его копию), подставляет в этот файл данные, запускает пересчет, считывает данные после пересчета, инициирует импорт книги в PDF.
В ответе клиенту в формате JSON передается массив считанных результатов просчета и ссылка на файл PDF.
Скажите, как «еще один макрос» решил бы эту задачу?
Добавлю для понимания — «клиенты» не являются людьми. Эти данные требуются другим сервисами.
может быть представлено объектом класса правила или замыканием
Это называется по-русски «анонимная функция» или «лямбда-функция». Использование термина «Closure» в PHP — ошибка разработчиков, в которой они не раз уже каялись.
Вы не являетесь для меня лицом, осуществляющим распорядительную функцию либо правосудие. Поэтому не имеете права судить о том, нарушил ли я лично какую-либо лицензию. Это раз.
Второе. Да, в моей юрисдикции существует понятие добросовестного использования. В личных (а я лично изучал применимость утилиты для моих собственных целей), научных и учебных целях. Что и было проделано.
К моменту запуска сервиса в продакшн коммерческая лицензия будет приобретена, либо использование утилиты будет прекращено.
Считаете, что я неправ — можете подать в суд. Полные личные реквизиты могу предоставить по запросу.
В коде выше я привел специально один маленький и незаметный комментарий:
// @todo: выключить, если не требуется видеть работу приложения
$this->xls->Application->Visible = 1;
Вот эта строчка, если в ней присвоить свойству Visible = 0, как раз и предотвращает появление приложения на рабочем столе.
Производительность, честно говоря, никакая. Запрос с расчетом простейшей формулы типа «2+2» занимает чуть ли не секунду. Но мне это некритично, к счастью.
Я для ознакомления и исследовательских целей волен ставить любой софт, какой захочу. Это вполне себе fair use. Убедившись в эффективности, можно и купить.
Откуда вы знаете, что «спиратили»? По себе людей судите?
Да, но зачем?
Почитал документацию — опять тоже самое. Фиксированные версии Apache (он вообще нам не нужен), PHP. Всё равно нужно обновлять, а под Windows это равнозначно «ставить заново».
Для обучения — может быть. Для продакшн-сервера — конечно нет.
Именно так.
Не было бы печали, если бы наши партнеры предоставляли алгоритмы расчета. Но вместо этого они зачастую дают просто «толстый» Excel-файл и говорят «ну… у нас же всё считается!» :)
Задача не решена. Пользователю не нужен Excel-файл, ему нужны данные из него. Результат обсчета подставленных данных, например в JSON и красивый PDF.
Более того, пользователь — не человек :)
Это веб-сервис для других сервисов. Часть микросервисной архитектуры.
Нет никаких «заказчиков», никто не собирается ничего править в таблицах.
Есть заранее данные файлы Excel, содержащие расчеты. Запустили — подставили данные — считали результат. Таких файлов сотни. Подставлять в них данные нужно сотни и тысячи раз в день.
Никакая «вёрстка» на PHP не справится с задачей «Запустить файл с макросами».
Пожалуйста, перечитайте статью внимательнее.
О, выкрики нашли и „ололо“. Не процитируете ли?
С каких это пор вежливое указание на терминологическую неточность стало вдруг „выкриками“?
Если автор сочтет замечание существенным — исправит. Нет — ну и на здоровье. Вы-то что так волнуетесь?
Наверное пятый раз за сегодня это объясняю ))
Closure — это замыкание контекста на Lambda. А никак не сама Lambda.
По запросу это приложение открывает нужный файл (а точнее, его копию), подставляет в этот файл данные, запускает пересчет, считывает данные после пересчета, инициирует импорт книги в PDF.
В ответе клиенту в формате JSON передается массив считанных результатов просчета и ссылка на файл PDF.
Скажите, как «еще один макрос» решил бы эту задачу?
Добавлю для понимания — «клиенты» не являются людьми. Эти данные требуются другим сервисами.
Мне не нужно читать или писать из/в файлы формата Excel. Мне было нужно их запустить — в родном Microsoft Office.
Это называется по-русски «анонимная функция» или «лямбда-функция». Использование термина «Closure» в PHP — ошибка разработчиков, в которой они не раз уже каялись.
Второе. Да, в моей юрисдикции существует понятие добросовестного использования. В личных (а я лично изучал применимость утилиты для моих собственных целей), научных и учебных целях. Что и было проделано.
К моменту запуска сервиса в продакшн коммерческая лицензия будет приобретена, либо использование утилиты будет прекращено.
Считаете, что я неправ — можете подать в суд. Полные личные реквизиты могу предоставить по запросу.
1. «Крупных заказчиков» десятки
2. Файлов сотни, их список меняется несколько раз в день
3. Алгоритмы в файлах также могут меняться ежедневно
Анализ такого объема алгоритмов, а, главное, их верификация и QA обошелся бы на три порядка дороже, чем один маленький виртуальный сервер с «виндой».
Вот эта строчка, если в ней присвоить свойству Visible = 0, как раз и предотвращает появление приложения на рабочем столе.
Производительность, честно говоря, никакая. Запрос с расчетом простейшей формулы типа «2+2» занимает чуть ли не секунду. Но мне это некритично, к счастью.
Я для ознакомления и исследовательских целей волен ставить любой софт, какой захочу. Это вполне себе fair use. Убедившись в эффективности, можно и купить.
Откуда вы знаете, что «спиратили»? По себе людей судите?
Почитал документацию — опять тоже самое. Фиксированные версии Apache (он вообще нам не нужен), PHP. Всё равно нужно обновлять, а под Windows это равнозначно «ставить заново».
Для обучения — может быть. Для продакшн-сервера — конечно нет.
Не было бы печали, если бы наши партнеры предоставляли алгоритмы расчета. Но вместо этого они зачастую дают просто «толстый» Excel-файл и говорят «ну… у нас же всё считается!» :)
Более того, пользователь — не человек :)
Это веб-сервис для других сервисов. Часть микросервисной архитектуры.