Резюме поста в нескольких предложениях
- Возможности Excel в части удаленного доступа и совместной работы с документами на сегодняшний день по меньшей мере сопоставимы с Google Docs;
- Excel-документ может быть интегрирован в html-страницы с сохранением значительной части функциональности, т.е. формулы и pivot tables будут работать;
- Я, равно как и любой другой человек, могу опубликовать свой Excel-документ таким образом, что ваше, равно как и чье-либо еще, веб-приложение сможет:
- отрисовать и открыть его для ручного ввода значений в ячейки,
- напрямую взаимодействовать с ним через JavaScript;
- У Microsoft есть сайт, посвященный интеграции Excel-документов в веб-приложения; также в природе существуют jQuery плагины, позволяющие сделать эту интеграцию быстрой и безболезненной;
- С практической точки зрения пользователь получает следующие плюшки:
- JavaScript представляет широкие возможности для визуализации и анимации Excel-таблиц, а также создания на их базе интерактивных приложений и дэшбордов;
- Возможность работы с Excel-документами на планшетах и мобильных устройствах;
- Удобный инструмент для создания рабочих прототипов систем управленческой отчетности.
Осторожное мнение автора о том, что Excel — это круто
Я очень люблю табличные процессоры за их простоту и универсальность. Тут в одном флаконе и база данных, и инструментарий моделирования, и визуализация. Разумеется, специализированные решения в каждой из этих областей значительно превосходят табличные процессоры по функционалу и масштабируемости. Но еще зачастую и по цене: речь идет не только о стоимости лицензий, но и о затратах на обучение сотрудников работе с новыми программами. Табличные же процессоры хороши тем, что они почти бесплатны, а еще ими в той или иной мере умеет пользоваться большинство людей, когда-либо работавших за компьютером, от школьника до пенсионера. Тут то и возникает вопрос: а нужна ли нам для решения конкретной задачи вся мощь специализированных систем? Или достаточно «наклепать на коленке табличку и пару диаграмм в Excel»?
Личный опыт подсказывает что для решения подавляющего большинства разовых задач достаточно как раз «наклепать на коленке». И только если требуется поставить на поток решение большого количества однородных задач, или ворочать большими объемами данных, или сделать какую-нибудь суперкрасивую интерактивную визуализацию, вот тогда уже есть смысл задуматься над инвестициями в специализированные системы. В самом деле, представьте себя на месте рядового менеджера или аналитика, которому поставлена задача посмотреть на некоторые данные, спрогнозировать возможные сценарии развития и предложить варианты действий с анализом возможных последствий. Убежден, что первым делом вы откроете Excel и станете вбивать туда свои данные и делать над ними расчеты.
Почему Excel, а не Google Docs, или, скажем, OpenOffice Calc? Да потому что «так здесь заведено». Де факто Excel был и остается стандартом табличных процессоров. Если вы менеджер или аналитик, работающий на чужой бизнес, и этот бизнес не является технологическим стартапом, то с большой вероятностью в своей работе вы активно используете именно Excel. И дело здесь не в какой-то уникальной функциональности: просто Excel существует очень давно, так же, как и большинство компаний, создающих сегодня рабочие места для менеджеров среднего звена. У этих компаний когда-то много лет назад просто не было выбора, а сейчас нет серьезных причин что-то менять.
Следует, однако, признать что Google Docs имеет неплохие шансы изменить эту расстановку сил благодаря возможностям удаленного доступа и совместной работы с документами через web. Мир меняется, и работа с документами в «облаках» из экзотики превращается в рутину. Доступ к Excel-документам через web существовал уже довольно давно, но только средствами SharePoint. Не буду вдаваться в детали, отмечу лишь, что для «обычного» человека это было практически равносильно отсутствию web-доступа. В результате «обычные» люди и молодые организации стали активно отдавать предпочтение Google Docs. С тех пор Microsoft приложили усилия, чтобы изменить ситуацию, и сегодня можно говорить о том, что офисные продукты переведены в «облака». Появились онлайн-версии продуктов Microsoft Office: бесплатные, но с усеченной функциональностью. За полноценные оффлайн версии по-прежнему надо платить. И те и другие интегрированы с OneDrive: облачным диском от Microsoft (прежнее название Skydrive).
Как ни удивительно, онлайн-версия Excel получила название Excel Online. О некоторых интересных особенностях этого продукта и пойдет речь дальше на примере одной из задач, которую я решал в свою бытность управленческим консультантом.
Автор делится своим опытом создания Excel Mashup
Итак, дано:
- Консультант разработал в Excel финансовую модель;
- Эту модель нужно презентовать очень серьезному дяде, финансовому директору ну очень большого банка;
- Дядя сильно занятой, почти все время какие-то встречи, но просил предварительно сбросить материалы, сказал, что сможет посмотреть в такси до аэропорта на своем iPad;
- Консультант понятия не имеет, какая операционная система и какие приложения стоят на этом iPad, и вообще нет ли у дяди склонности называть айпадом свой планшетник на андроиде;
- Консультант очень хочет, чтобы диаграммы были более красивыми и интерактивными, чем те, которые умеет делать Excel;
- С клиентом есть договоренность о неиспользовании в Excel макросов на VBScript;
- А еще консультант уверен, что дядя захочет поиграть с цифрами в модели, и нужно сделать так, чтобы во время игры он ничего не сломал.
Вопрос: что выслать дяде? Если просто Excel-документ, то дядя с большой вероятностью не сможет прочитать его на iPad. А если и сможет, то есть риск, что неправильно поймет, не те цифры внесет в модель, сломает ее и останется с предубеждением, что модель не работает. Как следствие, нужно будет назначать новую встречу, искать свободные слоты в дядином календаре, а проект затянется еще на пару недель, а то и на месяц.
В данном случае было принято решение сверстать веб-страницу, которая шаг за шагом демонстрировала дяде суть презентуемой модели, аналогично слайдам в PowerPoint. Основное отличие от слайдов заключалось в интерактивности: на некоторых этапах дядя мог через HTML-формы или jQuery слайдеры внести в модель собственные значения параметров. Новые значения транслировались в связанные с формой или слайдером ячейки Excel-документа, после чего модель автоматически пересчитывалась. Результаты пересчета почти мгновенно отображались на симпатичных JQuery диаграммах. Связка HTML-элементов и ячеек модели была реализована на JavaScript. Диаграммы использовали от Highcharts. Далее веб-страница и Excel-документ были размещены в SharePoint клиента, а дяде была выслана ссылка на страницу, которую он и открыл в браузере на своем iPad (это действительно оказался iPad), предварительно подключившись к корпоративной сети по VPN.
В этом примере у клиента был SharePoint, что облегчило задачу с точки зрения обеспечения конфиденциальности данных. Если SharePoint отсутствует, то необходимо будет загрузить документ на OneDrive, дать публичный доступ на чтение и подключиться к документу через токен. Поскольку доступ публичный, любой человек, знающий токен, сможет прочитать документ. Самым надежным способом обеспечения конфиденциальности данных в этом случае будет не выкладывать их на OneDrive. Другими словами, на OneDrive сохраняется пустой Excel-шаблон, а данные в него начитываются с собственного сервера по защищенным каналам в момент обращения, после того, как в браузере загрузится страница, в которую этот пустой шаблон внедрен. Менее надежный, но более простой в реализации способ – сообщать ссылку на страницу ограниченному кругу лиц и обеспечивать доступ на чтение файла на заранее определенное короткое время (по аналогии с тем, как делаются вебинары). Такой вариант подойдет, если данные не хотелось бы разглашать, но тем не менее они не являются сверхсекретными.
Как оказалось, описанная выше реализация – это практический пример явления, называемого Excel Mashup. Суть заключается в том, что Excel-документ можно внедрить в веб-страницу и с помощью JavaScript обеспечить взаимодействие между HTML элементами и ячейками Excel-документа. Чтобы понять принципы создания Excel Mashup первым делом обычно обращаются к сайту www.excelmashup.com/jsapi. Там можно найти различные сценарии использования JavaScript API, представленного Excel. Добрые люди (например, этот человек: www.neowin.net/news/microsoft-offers-excelmashupcom-for-quick-web-apps) пишут, что сайт запущен самими Microsoft. Однако, подозрительно малое количество лайков и спорный дизайн вызывают сомнения в авторстве столь уважаемой компании, но впрочем это не так уж важно.
Важно другое: между моментом когда я впервые прочитал этот сайт и моментом, когда я реализовал свой первый mashup, прошло немало времени. Частично это связано с тем, что куски кода, опубликованные на сайте www.excelmashup.com, не очень информативны: например дается определение функции, но не указывается, в каком месте она вызывается, какие скрипты должны быть предварительно подключены, какова должна быть HTML-разметка. Очень о многом приходилось догадываться, и думаю, что многие люди, располагавшие меньшим количеством времени или терпения, так и не смогли пройти путь до конца. Еще одна проблема была в том, что скрипт от Microsoft, в котором реализован класс Excel Web Access, конфликтует с jQuery, в результате чего плагины начинают вести себя неадекватно.
Для тех, кто не хочет наступать на эти грабли, приведу несколько примеров того, как интегрировать Excel и HTML путем написания нескольких строчек кода в JavaScript:
- Пример 1 (самый простой) – внедрить Excel-документ по токену и передать в JSON значения заданного пользователем диапазона ячеек. Исходники здесь: jsfiddle.net/ugBe2
- Пример 2 (посложнее) — внедрить Excel-документ по токену, затем через HTML-форму изменить значение любой заданной пользователем ячейки, после чего книга пересчитается, а результаты заданного пользователем диапазона сохранятся в JSON. Исходники здесь: jsfiddle.net/RVjLD
- Пример 3 (интерактивный с привязкой jQuery плагинов и инициализацией) — есть три элемента, каждый из которых связан с соответствующей ячейкой Excel-документа. Два из них слайдеры, связанные соответственно с ячейками B1 и B2. Третий – спидометр, связанный с ячейкой B3, которая рассчитывается как формула от B1 и B2. Как и в предыдущих примерах Excel-документ открывается по токену. По окончании загрузки вызывается функция инициализации, которая присваивает слайдерам и спидометру изначальные значения, записанные в ячейках B1:B3. Когда пользователь «двигает» слайдеры, вызывается функция, которая записывает новое значение в соответствующую слайдеру ячейку (B1 или B2). После этого значение в ячейке B3 пересчитывается и передается спидометру. Исходники здесь: jsfiddle.net/KMtnc
Во всех трех примерах используется небольшая jQuery библиотека, специально созданная для упрощения интеграции Excel и JavaScript. По ее содержимому я готов прокомментировать отдельно по мере поступления конкретных вопросов. Исходники библиотеки здесь: github.com/xls2web/x2w
Обратите внимание, эти примеры представляют собой чистый HTML-CSS-JavaScript. Если создать на их базе новый html-файл на локальной рабочей станции, подключенной к Интернет, и открыть его напрямую в браузере без веб-сервера, то результат не изменится. Не на всех, конечно, браузерах. Не будем показывать пальцем, но на последних версиях Chrome, Firefox, Safari и Opera этот трюк сработал, а вот на одном очень популярном браузере – нет (не открылся внедренный Excel документ). Тем не менее, факт в том, что можно сделать свой Excel Mashup без установки или аренды веб-сервера. Это, в свою очередь, открывает интересные возможности для офисных Excel-ниндзя. Корпоративные политики информационной безопасности редко разрешают офисным сотрудникам устанавливать на свои рабочие станции веб-сервер, а вот браузеры и выход в Интернет есть почти у всех, кому разрешено пользоваться Excel.
Ну и кому это все может быть нужно?
На мой взгляд, прежде всего тем самым офисным ниндзя, консультантам, аналитикам и менеджерам. Имея прямое отношение к этой гвардии, я за свою жизнь сделал приличное число моделей и прогнозов в Excel: разные расчеты доходности, скоринг, алокацию и прочие вещи из мира финансов, отчетности и управления рисками. Каждый раз наиболее сложным моментом, как ни странно, оказывалась не разработка модели, а ее презентация начальству и клиентам: разнообразным «опытным управленцам», «крепким хозяйственникам», «железным леди» и «энергичным молодым альфа-лидерам», которые так часто забираются на вершину корпоративной иерархии. А ведь для того, чтобы получить возможность докладывать перед «небожителями», нужно еще пройти фильтр из чуть менее удачливых седовласых и не очень советников, членов различных комитетов и прочих «экспертов». Одни пытаются вникнуть в детали, другие говорят: «Объясните нам так, как если бы вы объясняли пятилетнему ребенку». Одни мыслят таблицами и цифрами, у других образное мышление, а третьим обязательно надо пощупать руками прежде, чем делать какие-либо выводы. Всех их объединяет одно: это чрезвычайно занятые люди и то время, которое они вам уделяют следует рассматривать как подарок судьбы.
В свое время я пришел к выводу, что выступая перед этими товарищами, я не презентую модель, а скорее рассказываю историю. И зачастую для результатов проекта то, насколько складная получается история, гораздо важнее того, насколько хороша математическая и логическая составляющая модели. При этом математикой и логикой пренебрегать, безусловно, нельзя. Среди ваших слушателей всегда найдется желающий поковыряться в деталях или рассмотреть какой-нибудь оригинальный сценарий именно в тот момент, когда вы к этому меньше всего готовы.
Таким образом, сделать комплект материалов, подходящих для всех – это большое искусство. Excel, здесь необходим, но им одним не обойтись: слишком невелики его возможности как инструмента визуального сопровождения и управления ходом той истории, что вы рассказываете. Обычно для этих целей используют PowerPoint, но здесь беда с интерактивностью. PowerPoint отлично рассказывает вашу историю до тех пор, пока никто не задает вопросов. Как только требуется налету изменить допущения модели, PowerPoint перестает быть вашим помощником. Можно, конечно попытаться сделать презентацию интерактивной с помощью макросов на VBScript, но лучше не пробовать. Нередко бывает, что одни и те же слайды по-разному отображаются на различных устройствах, и чем сложнее презентация, тем больше вероятность того, что это произойдет в самый неподходящий момент. Именно поэтому в консалтинговых компаниях принято конвертировать презентации в pdf перед тем, как направлять их клиентам. И именно поэтому в истории «про дядю» одним из ограничений было неиспользование VBScript.
С ростом популярности jQuery и количества полезных плагинов сверстать презентацию в HTML-CSS-JavaScript стало немногим сложнее, чем в PowerPoint. А лично мне, например, даже легче, поскольку найти и подключить хороший готовый HTML-CSS шаблон намного проще, чем приличную PowerPoint презентацию; взять тот же Bootstrap. HTML-CSS-JavaScript в гораздо меньшей степени страдают описанными выше «болезнями» PowerPoint. С точки зрения интерактивности JavaScript дает 100 очков вперед. Конечно, проверка документа на Chrome, Firefox, Safari, Opera и еще одном браузере не даст 100% гарантии того, что клиент увидит презентацию ровно в том виде, как вы ее задумали. Но 90% даст, а это значительно больше, чем может дать PowerPoint. В общем сделать интерактивную презентации на базе вашей Excel-модели стало возможным.
Есть еще одна область, где можно было бы эффективно применять Excel Mashup. Большинство Excel-документов, о которых говорилось выше, предназначены для того, чтобы на основании анализа фактов и допущений менеджеры могли строить прогнозы и, в конечном итоге, принимать управленческие решения. Существуют также специализированные системы, предназначенные для этих целей. Речь идет прежде всего о системах, которые позиционируют себя как Management Information Systems, Business Performance Management и Business Intelligence. В русском языке их часто называют системами корпоративной или управленческой отчетности. В крупных организациях такие системы довольно часто внедряются в качестве замены сотням разрозненных Excel-документов. Целью обычно являются централизация и ускорение процесса подготовки отчетности, а также в целом более эффективное использование информации как актива.
Проекты внедрения таких систем на ранних стадиях часто включают в себя этапы, на выходе из которых получают прототип системы. Прототип – это в целом работающая система, но недостаточно надежная и масштабируемая, чтобы использовать в промышленной эксплуатации. Очень важно, что прототип должен создаваться быстро и малыми усилиями. Именно при создании прототипов использование Excel Mashup может стать эффективным.
Дело в том, что пользователи и бизнес-аналитики такого рода систем в большинстве своем являются также продвинутыми пользователями Excel. А Excel-документ — это такая вещь, которую можно сделать относительно быстро. Если же вы бизнес-аналитик, который умеет делать Excel Mashup, то это значит, что вы можете в относительно короткие сроки «на коленке» сделать прототип вашего отчета или дашборда без привлечения программистов. Такой прототип лучше любой постановки задачи объяснит команде разработчиков, что же хочет получить заказчик. Кроме того, в случае отсутствия критических функциональных недоделок заказчик может использовать прототип для решения своих задач до тех пор, пока в эксплуатацию не будет введено «надежное и масштабируемое решение». Быстрый прототип, довольный заказчик, взаимопонимание между аналитиками и разработчиками: что еще нужно проект-менеджеру для счастья?
В заключение отмечу следующее: в целом, перед нами несложная в изучении и использовании вещь с определенным потенциалом. Может оказаться полезной, особенно если вы много работаете с Excel. Ну и шлю лучи своего уважения компании Microsoft, мне кажется они двигаются в верном направлении.