Статьи

Разработка приложений PHP с помощью Excel с использованием сервера листов

Время от времени кто-то делает с PHP что-то действительно уникальное, что выходит далеко за рамки норм PHP-приложений, перечисленных в Hotscripts, и оставляет вас по-настоящему впечатленными возможностями этого языка.

Одним из ярких примеров является Jedox’s Worksheet Server , поистине уникальная комбинация Microsoft Excel и PHP, которая позволяет пользователям создавать «электронные таблицы».

Впервые я услышал о Worksheet Server в декабре прошлого года и был настолько очарован идеей, что мне пришлось заглянуть в Jedox (пару часов из дома), чтобы узнать больше. С тех пор я в свободное время связывался с пробной копией Worksheet Server, пытаясь определить его значение как инструмента для создания веб-приложений.

Если вы читали « Создание электронных таблиц с PHP и PEAR» , вы поймете, что я не против использовать Excel с PHP, когда он делает лучший выбор, чем обычная таблица HTML для отображения данных. Сервер рабочих таблиц работает в обратном направлении, отправной точкой является электронная таблица Excel, а конечным результатом является работающее веб-приложение PHP.

Это технологический обзор Worksheet Server глазами разработчика PHP.

На сегодняшней книге:

  • Представляем Worksheet Server: Worksheet что?
  • Первые впечатления: мысли как наивного пользователя Excel
  • PHP Developers View: сгенерированный код и расширение
  • Сумма (A1: A3): выводы
Представляем Worksheet Server

Основная цель Worksheet Server — предоставить пользователям Excel возможность создавать веб-приложения, используя среду, в которой они уже уверены. Как веб-разработчик, лучший способ подумать о Worksheet Server — это инструмент проектирования для создания специализированных приложений PHP, где в качестве инструмента используется Excel.

Worksheet Server состоит из двух отдельных программных пакетов: веб-платформа (Apache, PHP и код Worksheet Server, объединенные в удобную для установки форму) и набор дополнений для самого Excel, которые помогут вам разрабатывать и публиковать приложения. Я буду называть последнюю половину «WS Excel Designer», чтобы избежать путаницы.

Жизненный цикл сервера рабочего листа

Самый простой способ понять, что делает Worksheet Server, — это рассмотреть «жизненный цикл» приложения, созданного и развернутого с его помощью.

Шаг 1: Дизайн

Разработка приложения начинается с электронной таблицы Excel, 99% работы которой ничем не отличается от создания обычной электронной таблицы.

Специальные макросы WS Excel Designer доступны для выполнения таких задач, как добавление гиперссылок и изображений в приложение, чтобы они правильно отображались как HTML в веб-среде. Кроме того, также доступны функции сервера рабочих листов, такие как функция MYSQLDATA, которая заполняет ячейку результатом запроса MySQL. Они используются так же, как обычные функции Excel, но приобретают смысл только после запуска на веб-сервере.

Шаг 2: Сборка

Дизайнер, довольный электронной таблицей, «строит» приложение для веб-среды Worksheet Server, используя другой макрос WS Excel Designer.

На практике создается ZIP-файл, который содержит все, что серверу Worksheet необходимо знать о приложении.

Шаг 3: Публикация

В Worksheet Server (веб-сервер) администраторы публикуют приложение. Сначала они входят в «Application Center» (приложение PHP, которое управляет несколькими приложениями сервера Worksheet), загружают ZIP-файл, «компилируют» его (процесс, который генерирует сценарии PHP для приложения), затем запускают приложение (приложение). становится доступным по уникальному URL на веб-сервере).

Шаг 4: Безопасность

Администраторы входят в новое приложение, используя URL-адрес, полученный из Центра приложений. Они создают учетные записи для конечных пользователей, предоставляя им права доступа к приложению.

Шаг 5: Начните работу!

Конечные пользователи теперь могут войти в систему (через Интернет) и начать работать с приложением. Они больше не работают с отдельными локальными копиями одной и той же электронной таблицы; скорее они сотрудничают через динамическое веб-приложение. Это выглядит в значительной степени так же, как и в исходной электронной таблице, но позволяет им работать одновременно (изменения отражаются сразу) и может связывать их с широким спектром других удаленных источников данных (базы данных, веб-службы и т. Д.).

Шаг X: Редизайн

Если требуются изменения в дизайне приложения, вышеуказанный цикл начинается заново, за вычетом усилий по настройке учетных записей пользователей. Дизайнеры продолжают работу с того места, где они остановились, используя сохраненный файл .xls (или обновленную копию, загруженную с сервера Worksheet), а затем повторно публикуют приложение.

Сервер рабочих таблиц действует как генератор активного кода (а не как генератор пассивного кода — см. Этот пост для размышлений о создании активного и пассивного кода). Код, работающий на веб-сервере, не предназначен для непосредственного изменения (хотя у вас есть возможность написать «внешний» PHP-код для взаимодействия с ним). Таким образом, Worksheet Server позволяет разработчикам вносить постепенные изменения в свои приложения, ничего не нарушая.

Надеюсь, это прояснит, что такое Worksheet Server. Конечно, увидеть конечный результат помогает еще больше — лучше всего посмотреть онлайн-демонстрации Jedox (обратите внимание, что доступны приложение и файл Excel, который использовался для его создания).

Первые впечатления

С ознакомительной копией Worksheet Server и копией руководства в руках я взял его на себя, установил и следовал вводному руководству, которое проведет вас через создание базового приложения. Само руководство простое и не тратит время на перегрузку читателя посторонней информацией. Он сосредоточен на том, чтобы как можно быстрее приступить к реальной работе. Я бы хотел, чтобы таким образом было написано больше технических документов.

Настроить

Установка Worksheet Server является двухэтапным процессом.

Шаг первый включает в себя установку веб-среды. Вы можете запустить сервер как в Linux, так и в Windows (нет никаких требований для расширений, специфичных для Windows, несмотря на то, что Excel является средством проектирования). Я выбрал Windows, игнорируя Linux на другом разделе, так как полагал, что это сохранит загрузку между ними при работе с Excel в той же системе.

Установка включает в себя просто запуск программы установки и просмотр ее установки Apache, PHP и программного обеспечения Worksheet Server; здесь очень мало требований к вмешательству пользователя и нет неловких вопросов, которые бы поставили в тупик не технаря.

Когда я настраивал PHP / Apache вручную, я немного подозрительно относился к тому, что я найду при ближайшем рассмотрении после завершения установки. Я быстро почувствовал облегчение, обнаружив не только последние стабильные выпуски (например, PHP 4.3.6), но и разумную конфигурацию PHP (например, register_globals выключен и error_reporting установлен в E_ALL). Джедокс, кажется, знает, что они делают.

Все стандартные расширения Windows PHP доступны вместе с дополнительными расширениями, разработанными компанией Jedox. Файл лицензии необходим для запуска приложения Worksheet Server (просто копирование его в правильное местоположение), и, как только это было сделано, я сразу же смог войти в онлайн-«Центр приложений».

Второй шаг включает в себя установку WS Excel Designer, для работы которой требуется дополнительный файл лицензии. С этим файлом быстрый способ сделать это — просто запустить Excel, а затем открыть файл .xla, предоставляемый Jedox, который добавляет дополнительное меню, содержащее инструменты WS Excel Designer, на время сеанса. Более разумный путь — использовать менеджер надстроек Excel, чтобы постоянно прикреплять новое меню. Обратите внимание, что Excel 2000 является минимальным требованием.

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

Мгновенное применение

После вводного урока я был впечатлен тем, насколько легко работать с WS Excel Designer. Любому, кто имеет опыт работы с Excel, действительно требуется всего несколько минут, чтобы овладеть расширениями WS Excel Designer. Как правило, процесс создания приложения Worksheet Server ничем не отличается от процесса работы с обычной электронной таблицей, и добавленная функциональность не нарушает нормальный «поток» создания электронной таблицы. Необходим некоторый опыт, чтобы понять, как будет выглядеть электронная таблица, когда она, наконец, будет развернута в сети, но это больше вопрос тонкой настройки.

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

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

Идя по опубликованному URL, я сначала вошел в систему с учетной записью администратора и создал нового пользователя для доступа к приложению. Вернувшись с новой учетной записью, я увидел свою электронную таблицу, которая теперь работает как живое веб-приложение на PHP.

Я был очень впечатлен тем, как мало времени понадобилось, чтобы продвинуться так далеко.

Смотри и чувствуй

Процесс визуального проектирования в Excel транслируется непосредственно в сгенерированное веб-приложение. Другими словами, структура ячеек данного листа Excel, формулы и отношения между ячейками (даже между несколькими листами), размеры и цвета шрифта будут все проявляться на веб-сервере.

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

Обратите внимание, что необходимо учитывать некоторые «причуды», принимая во внимание, что Excel, как инструмент представления, не отображается непосредственно на «HTML + веб-браузер». Jedox рекомендует установить шрифт по умолчанию как Arial, который широко поддерживается как в браузерах, так и в операционных системах, и рекомендует сохранять размеры шрифта в определенном диапазоне, чтобы избежать странных результатов. Они также советуют вам сохранять рабочие листы разумного размера страницы (как по горизонтали, так и по вертикали), чтобы соответствовать эргономике веб-браузера и облегчать навигацию в приложении (кому нравится интенсивная прокрутка?).

При компиляции приложения предоставляются различные «скины», позволяющие применять общие изменения к внешнему виду (в основном это касается панелей, которые отображаются сверху и снизу).

Как правило, веб-версия является довольно точной копией того, с чем я работал в Excel. Если вы сравните каждый исходный файл Excel онлайн (связанный с каждой демонстрацией) с его демонстрацией, вы увидите, как оригинальный дизайн соответствует конечному результату.

навигация

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

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

Таблицы, состоящие из нескольких таблиц, доступны для навигации либо через выпадающее меню, либо путем создания специального листа меню в Excel. Вы можете увидеть разницу, сравнив Outline Demo с Basel II Cockpit Demo .

Я полагаю, что пользователи Excel должны быть довольно счастливы в этой среде.

Просмотреть источник

Сравнение дисплеев в Firefox и Internet Explorer показывает, что они довольно близки (без очевидных проблем с доступностью).

Взгляд на исходный HTML показывает много таблиц, которые могут не понравиться всем, но в конце концов это табличные данные. Разброс имен тегов в верхнем регистре предполагает небольшую очистку, и атрибут style используется во многих тегах.

Это означает, что вам в значительной степени требуется изменить структуру с помощью Excel, а не применять хитрые уловки CSS, но, как я уже упоминал ранее, Worksheet Server является генератором активного кода; Вы не должны изменять конечный результат напрямую.

Ограничения

Не все функциональные возможности Excel могут использоваться при создании приложений Worksheet Server, и эти ограничения четко определены в руководстве к серверу Worksheet.

Например, из панели инструментов «Элементы управления» в Excel можно использовать только элементы управления «список», «раскрывающийся список» и «флажок», а встроенные изображения будут игнорироваться (хотя диаграммы могут быть добавлены с помощью мастера диаграмм или специальных функций) ,

Не предоставляется поддержка инструментов Excel, таких как «Поиск цели» и «Сценарии»; Макросы Visual Basic не нужны. Отсутствие поддержки Visual Basic может, на первый взгляд, показаться ограничителем шоу. На практике Worksheet Server заменяет VB настоящей многопользовательской средой, поддерживаемой PHP, когда вам нужно выполнить что-то необычное. Помните, что Worksheet Server — это инструмент для разработки приложений, а не надстройка для Excel, которая слепо экспортирует электронные таблицы в HTML. Jedox рекомендует запускать каждое приложение с новой электронной таблицей и рекомендует планировать его дизайн с конкретной целью доставки веб-приложения.

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

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

Иерархические данные

Одной из особенностей Worksheet Server, которая будет новой для пользователей Excel, является понятие объектов отчетов.

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

Лучший способ понять, как работают объекты отчетов, — это посмотреть Outline Demo . Когда вы войдете в систему, вы увидите, что на верхней панели доступно раскрывающееся меню, позволяющее изменить «Отчетный объект» на «Всего», «Север», «Запад» или «Восток». Регионы «Север», «Запад» и «Восток» представляют области продаж в этой демонстрации, и региональные менеджеры по продажам будут использовать свой соответствующий объект отчета для ввода данных о продажах. Таблица «Итого» является объектом отчетности верхнего уровня и объединяет данные от каждого из дочерних объектов. Это представление будет доступно Главному менеджеру по продажам, что позволит ему или ей увидеть общую картину продаж и перейти к каждому региону по мере необходимости.

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

Для создания объектов отчетов требуется только определить их в интерфейсе онлайн-администрирования приложения и указать иерархию. Вы также можете определить, какие пользователи имеют доступ к каким объектам; это позволяет вам, например, ограничить вашего менеджера по продажам для «северного» региона соответствующим субъектом. Что впечатляет в отчетных объектах, так это то, что, как только они определены как дерево, Worksheet Server позаботится обо всем остальном, автоматически вычисляя значения ячеек в объектах верхнего уровня, не требуя каких-либо изменений в исходном проекте.

Подотчетные организации играют важную роль в превращении приложений Worksheet Server в мощные многопользовательские инструменты совместной работы.

Взгляд разработчика PHP

Это дает вам представление о том, как Worksheet Server выглядит для пользователя Excel — но как он вписывается в разработку PHP в целом?

Ментальная олимпиада

Первое концептуальное препятствие, которое должен преодолеть разработчик PHP, заключается в способе представления данных в приложении сервера рабочего листа. Вполне вероятно, что вы видите таблицу и сразу же думаете о «наборе результатов SQL, отображаемых в цикле», учитывая, что большая часть веб-приложений — именно это.

В типичном приложении Worksheet Server ячейки таблицы HTML представляют собой электронную таблицу Excel. Каждая ячейка обычно представляет собой либо «необработанные данные» — значения, которые были жестко запрограммированы, введены пользователями или извлечены индивидуально из базы данных, либо «составные данные» — результат формул, примененных к ячейкам «необработанных данных».

За кулисами Worksheet Server сохраняет данные, содержащиеся в ячейках, в сериализованном виде в файловой системе. Он управляет блокировкой файлов, чтобы предотвратить одновременное обновление одним и тем же значением несколькими пользователями, и получает самые последние данные отсюда каждый раз, когда происходит обновление страницы.

Второй ментальный скачок, который требуется от разработчиков, предполагает понимание того, что вы имеете дело с сгенерированным кодом; Вы не собираетесь изменять приложение сервера Worksheet напрямую. Вместо этого вам нужно использовать определенные «точки расширения», предоставляемые сервером Worksheet, о которых я расскажу чуть позже.

Вызов функций PHP из Excel

Для простых приложений ваше участие в качестве разработчика PHP может не требоваться вообще. WS Excel Designer предоставляет множество функций в распоряжение пользователей Excel — они могут даже подключаться к базе данных, выполнять запрос и вставлять части результата в ячейки с помощью специальных функций Excel, предоставляемых Worksheet Server.

Например, чтобы вставить в ячейку в Excel одно имя пользователя, извлеченное из базы данных MySQL, можно использовать следующие функции, все из которых предоставляются Worksheet Server.

В ячейке A1 электронной таблицы может быть следующее:

MYSQLINIT('mydatabase','harryf','secret');   Cell: A1 

Функция MYSQLINIT() принимает параметры подключения к базе данных и предоставляет ресурс подключения, с помощью которого вы можете выполнять запросы.

Далее в ячейку А2 вы вводите:

 MYSQLEXEC(A1,"SELECT * FROM users");   Cell: A2 

Обратите внимание, что первый аргумент «указывает» на ячейку A1, где использовался MYSQLINIT (и где было создано соединение с MySQL). Второй аргумент — это сам запрос.

Наконец, в ячейку D15, например, вы вводите:

 MYSQLDATA(A2,15,2)   Cell: D15 

Здесь A2 указывает на ячейку, в которой был выполнен запрос, «15» относится к номеру строки в наборе результатов запроса, а «2» относится к номеру столбца в строке.

Данные, полученные по этому запросу, недоступны для дизайнера, работающего с Excel. Он доступен только после публикации приложения в Интернете. Функции Excel автоматически переводятся в свои эквиваленты PHP, делая ссылочные данные доступными для пользователей.

Конечно, это не останавливается на MySQL — Worksheet Server предоставляет аналогичные функции для доступа ODBC к базам данных, функциональность OLAP с использованием расширения PHP, разработанного командой Jedox, и очень классную поддержку SOAP, которая очень похожа на пример MySQL выше, но инициализируется с использованием URL WSDL. Есть также функции рисования и графики, предоставляемые Jedox, которые компенсируют ограничения при использовании собственных функций Excel. Все это доступно для дизайнера, работающего с Excel, и не требует дополнительных усилий в PHP.

Без работы?

Вы, вероятно, спрашиваете: «Если дизайнеры могут сделать так много с Worksheet Server, что мне остается делать?» Действительно, в базовых приложениях, для которых адекватна функциональность сервера рабочих листов по умолчанию, разработчик PHP практически не нуждается в участии.

Но, конечно, разработка программного обеспечения никогда не бывает такой простой. Кто-то всегда выдвигает уникальное требование, или есть некоторые важные данные, которые необходимо извлечь из какого-либо неподдерживаемого источника, и в этот момент знание PHP является обязательным требованием. Более того, если PHP уже является частью ландшафта, почему бы не интегрировать приложения Worksheet Server с существующими приложениями? Введите разработчика PHP …

Механизмы Worksheet Server, обеспечивающие расширение его функциональных возможностей и общение с другими приложениями PHP, являются простыми и мощными. Нет необходимости начинать возиться с сгенерированным кодом.

Обнять и расширить

Самая базовая форма связи между Worksheet Server и другими веб-приложениями осуществляется через функцию Hyperlink, которая предоставляет обычные возможности для передачи переменных «вовне» с помощью переменных GET в URL. Это может быть не слишком захватывающим, но это решит много простых проблем, таких как возможность обратной ссылки на веб-интерфейс для удаленного источника данных, используемого для заполнения определенной ячейки.

Следующий механизм заключается в том, что при использовании преимуществ файлов Worksheet Server попытается включить их автоматически, если сможет их найти.

В процессе ответа на запрос страницы сервер Worksheet ищет сценарии before_recalc.inc и after_recalc.inc — они включаются, соответственно, до и после того, как содержимое ячеек пересчитывается для текущего запроса (при условии, что вы их создали). ). Выходные данные, сгенерированные в обоих этих файлах, будут отображаться до отображения HTML-кода рабочего листа, но на самом деле это не их предназначение; вместо этого они позволяют вам настроить среду до того, как произойдет пересчет, а затем ответить на вычисления, возможно, обновив базу данных, которая зависит от результата.

Другой скрипт, который будет пытаться включить Worksheet Server, — это userfunc.inc , в котором можно определить (или включить) ваши собственные функции PHP. Они будут вызываться для вас в соответствии с тем, что было размещено в самой электронной таблице Excel, или из вызовов в before_recalc.inc и after_recalc.inc .

Следует помнить, что приложения сервера Worksheet делают все ячейки листа доступными в виде глобальных переменных PHP с именами, такими как $S1_B2 (что относится к листу 1, ячейка B 2). Слова «глобальные» и «переменные» могут вызывать сигналы тревоги, и вам нужно быть осторожным при определении переменных с одинаковыми именами. Тем не менее, как часто вы называете переменную $S1_B2 ? Помните также, что register_globals выключен. Расположение переменных в глобальной области упрощает жизнь тем, кто добавляет свои собственные функции сервера рабочих листов. Вполне вероятно, что некоторые пользователи Excel начнут изучать PHP по мере необходимости или интереса, как только начнут использовать Worksheet Server.

Пользовательская функция

Пример, который иллюстрирует эту точку зрения, может быть реализован с помощью специальной функции Excel, определенной сервером SHOWBUTTON() листов, которая называется SHOWBUTTON() . Это принимает три аргумента: значение и имя (соответствующее имени и значению атрибутов входного тега HTML) и заголовок, который отображается при наведении мыши на кнопку. Он также генерирует кнопку формы для пользователей, чтобы щелкнуть в приложении. Представьте, что я помещаю функцию в ячейку на листе Excel следующим образом:

 SHOWBUTTON("Stock Check","doStockCheck","Tell Warehouse to Check Stock") 

Сделав это, я могу проверить, нажал ли пользователь приложения на кнопку, используя after_recalc.inc следующим образом:

 <?php  if ( isset($_POST['doStockCheck']) ) {     // Call my own PHP function, defined in userfunc.inc    doStockCheck();  } 

Теперь в userfunc.inc я могу определить doStockCheck() следующим образом:

 <?php  function doStockCheck() {     // Include our own DB library    require_once 'lib/db/db_conn_manager.php';     // Fetch values from the global cell values    $productName = mysql_escape_string( $GLOBALS['S1_D6'] );    $requiredQuantity = mysql_escape_string( $GLOBALS['S1_D7'] );     // Build a query    $sql = "INSERT INTO stock_required                (name,quantity)            VALUES ('$productName','$requiredQuantity');";     // Insert the data    DBC::execute($sql);   } 

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

Функции, которые вы реализуете в скрипте userfunc.inc также можно напрямую вызывать, называя их в листе Excel. Другими словами, дизайнер может определить имя функции PHP, которое вы реализовали в ячейке при работе с электронной таблицей, и оно будет выполняться на веб-сервере каждый раз, когда значение ячейки пересчитывается.

Таким образом, вы можете рассматривать приложение Worksheet Server как гигантский «компонент» и использовать определенные вами функции для вызова кода в остальной части вашей «инфраструктуры», например, используя свою библиотеку журналов для отслеживания пользователей Worksheet Server (примечание на сервере Worksheet уже есть встроенный механизм ведения журналов, но может потребоваться его интеграция с существующей инфраструктурой).

Справиться с переменами

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

Как уже упоминалось, Worksheet Server является генератором активного кода (вы не должны связываться напрямую с PHP в генерирует). Вопрос в том, смогут ли добавленные вами функции пережить изменения в сгенерированном коде?

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

Конечно, если дизайнер изменяет имя вызова функции, который они поместили в электронную таблицу, это потребует модификации его реализации PHP (но, надеюсь, это будет запланировано заранее).

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

Контроль доступа

В качестве альтернативы своему внутреннему механизму контроля доступа, Worksheet Server поддерживает использование LDAP для аутентификации. Это должно хорошо сочетаться с существующей инфраструктурой в средних и крупных организациях.

Для переключения приложения Worksheet Server из встроенной системы управления доступом на LDAP-сервер все, что вам нужно, это определить сценарий ldap.inc , содержащий функции GetLDAPUsergroups() , предоставляющий серверу Worksheet список доступных групп, и CheckLDAPAccount() , который принимает имя пользователя и пароль и должен возвращать значение, указывающее, является ли пользователь действительным. Также доступна дополнительная (дополнительная) функция электронных таблиц; LDAPDATA() позволяет вам передавать серверу Worksheet дополнительную информацию о пользователе, такую ​​как адрес электронной почты и номер телефона.

Конечно, не все используют LDAP, и, если вы размещаете приложения Worksheet Server на существующем веб-сайте, скорее всего, вы уже внедрили свой собственный механизм безопасности. Хорошей новостью является то, что Worksheet Server на самом деле не знает, был ли источник данных безопасности, используемый внутри CheckLDAPAccount() , на самом деле сервером LDAP. Вместо этого вы можете реализовать код, например, для проверки пользователя по таблице в MySQL.

Сгенерированный код

Когда приложение компилируется в онлайновом «Центре приложений», оно создает структуру каталогов, в которую помещается сгенерированный источник PHP, а также шаблоны HTML, файлы журналов, файлы сериализованных данных, базы данных учетных записей пользователей и все остальное, что необходимо для запуска приложения. ,

Worksheet Server определяет свои собственные расширения файлов для исходного кода PHP, избегая расширения ‘.php’ и упорядочивая сценарии по их функциям. Например, файл .xcc содержит вычисления ячеек, которые определяют отношения между ячейками. Фрагмент файла .xcc для приложения Quick Demo показан ниже:

 <?PHP  $S2_C7 = $S2_C6+$S2_C5;  $S2_D7 = $S2_D6+$S2_D5;  $S2_E7 = $S2_E6+$S2_E5;  $S2_F7 = $S2_F6+$S2_F5;  $S2_G5 = SUMxl(ARRAY(1,4,$S2_C5,$S2_D5,$S2_E5,$S2_F5));  $S2_G6 = SUMxl(ARRAY(1,4,$S2_C6,$S2_D6,$S2_E6,$S2_F6));  // ... 

Вы можете снова увидеть глобальные переменные ячейки, такие как $S2_C7 = $S2_C6+$S2_C5; значение ячейки C7 является суммой ячеек C6 и C5, а $S2_G5 = SUMxl(ARRAY(1,4,$S2_C5,$S2_D5,$S2_E5,$S2_F5)); эквивалент размещения функции Excel =SUM(C5:G5) в ячейке G5 рабочего листа.

Другие расширения файлов, такие как «.xlr» и «.xic», содержат параметры конфигурации PHP для всего приложения и код, который должен выполняться при создании сообщения формы, соответственно.

Конечно, вам не нужно беспокоиться об этом, так как это весь сгенерированный код, но интересно посмотреть, как устроен Worksheet Server. Наряду с этими файлами вы можете создавать before_recalc.inc , after_recalc.inc , userfunc.inc и ldap.inc , которые обсуждались выше, которые Worksheet Server ищет автоматически и выполняет, если они найдены.

Исходный код PHP, который обеспечивает работу Worksheet Server, зашифрован с помощью Zend Encoder; это, в конце концов, коммерческий продукт. Хотя хакер PHP во мне счел немного разочаровывающим неспособность увидеть то, что происходило за кулисами, я могу себе представить, что это имеет преимущество, заставляя разработчиков использовать «интерфейсы», предоставляемые сервером рабочих листов, а не становиться жертвой соблазн сделать «всего несколько небольших изменений».

SUM (A1: A3)

Основная идея Worksheet Server — использование Excel в качестве инструмента дизайна для веб-приложений — очень гениальна. Разработчики обсуждают такие вещи за чашкой кофе: «Разве это не круто…». Разница, в случае Jedox, в том, что эти разработчики действительно сделали это.

Несмотря на относительно короткое знакомство с Worksheet Server, у меня сложилось впечатление, что это зрелый программный продукт (версия, с которой я работал, была 2.1.x). Я не столкнулся с серьезными ошибками или головными болями; все, что я пробовал, сработало как положено. Судя по типу функций, которые Jedox добавил в последние выпуски, команда создала надежную базу кода и теперь может реагировать на полезные предложения пользователей.

Больше всего меня поразило то, как быстро с помощью этого продукта можно создавать мощные приложения. Если у вас есть опыт работы с Excel, процесс проектирования — это просто расширение создания электронных таблиц. Добавление функциональности в опубликованное приложение с использованием PHP также просто — все функции PHP в вашем распоряжении.

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

Кроме того, меня удивило то, насколько хорошо PHP соответствует ожиданиям пользователей Excel и насколько близко он соответствует Visual Basic при использовании в Excel. Я могу себе представить, что опытные пользователи Excel находят PHP шагом в шаге (а не гигантским скачком) при расширении Worksheet Server.

Что меня поразило, так это то, как Jedox построил свой продукт на стеке программного обеспечения с открытым исходным кодом (Apache, PHP, библиотеки PHP и т. Д.), Чтобы создать гладкий, готовый продукт, который можно рассматривать как единое целое, а не как свободную коллекцию частей. , Более того, Worksheet Server объединяет возможности Excel и PHP, чтобы обеспечить лучшее из обоих миров. Эта комбинация сама по себе делает Worksheet Server уникальным приложением и представляет собой увлекательный пример того, где могут находиться будущие рынки для разработки программного обеспечения.

Конечно, Worksheet Server является коммерческим продуктом, и, если посмотреть на цены, становится ясно, что этот пакет не предназначен для домашнего пользователя. Некоторые, на более радикальном конце Open Source, могут утверждать фундаментальную «неправильность» использования Open Source в качестве основы для коммерческого продукта, но остальные из нас, кто любит есть и иметь крышу над головой, понимают, что деньги должен прийти откуда-то. Worksheet Server добавляет значительную ценность Open Source, на котором он построен, сглаживая неровности и предоставляя конечным пользователям высококачественный продукт. Ясно, что должен быть возврат инвестиций; без него такого программного обеспечения, как Worksheet Server, никогда бы не было.

Worksheet Server также является хорошей новостью для разработчиков PHP, поскольку он предоставляет нашу любимую платформу пользователям, которые, вероятно, не знают о ее существовании, и имеет потенциал для создания новых рабочих мест в отраслях, в которых PHP еще не оказал влияния.

В конечном итоге, Worksheet Server выводит Excel в Интернет. Он превращает однопользовательскую электронную таблицу в динамическое приложение с полным доступом к «Предприятию» (базы данных, веб-службы и т. Д.). Компании, чьи сотрудники полагаются на Excel как на инструмент для создания отчетов и управления данными, тратят много времени и усилий на управление совместной работой, изо всех сил пытаются объединить данные из нескольких копий одного листа и ломают голову над тем, как получить текущую информацию от всех видов корпоративных источники данных. Worksheet Server решает все эти проблемы, используя Интернет для предоставления огромных преимуществ корпоративным пользователям Excel, и является (насколько мне известно) единственным продуктом такого рода.