Приложения excel на сайт

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

Итак, меня зовут Михаил и я CTO в Exerica. Одна из проблем которые мы решаем — облегчение работы финансовых аналитиков с числовыми данными. Обычно они работают как с исходными документами финансовой и статистической отчетности, так и каким-либо инструментом для создания и поддержания аналитических моделей. Так сложилось, что 99% аналитиков работают в Microsoft Excel и делают там довольно сложные вещи. Поэтому перевести их с Excel на другие решения не эффективно и практически невозможно. Объективно, «облачные» сервисы электронных таблиц до функционала Excel пока не дотягивают. Но в современном мире инструменты должны быть удобны и соответствовать ожиданиям пользователей: открываться по клику мышки, иметь удобный поиск. А реализация в виде разных несвязанных приложений будет довольно далека от ожиданий пользователя.

То с чем работает аналитик выглядит примерно так:

Основные данные тут — это числовые «финансовые показатели», например, доход за 1 квартал 2020 года. Для простоты буду называть их дальше просто «числами». Как видно, почти никакой связи между числами в документе и в аналитической модели нет, все только в голове у аналитика. И работа с заполнением и поддержанием модели занимает часы поиска и перебивания чисел из документа в таблицы, а потом поиск ошибок ввода. Вместе этого мы хотели бы предложить пользователю привычные инструменты: «перетаскивание», вставка через клипборд и так далее, а также быстрый просмотр исходных данных.

Что у нас уже было

К моменту, когда мы начали реализацию интерактивного взаимодействия с Excel в виде, изложенном в этой статье, у нас уже была база данных на MongoDB, бэкэнд в виде REST API на .NET Core, фронтовое SPA на Angular и некоторые другие сервисы. Мы к этому моменту уже пробовали разные варианты интеграции в приложения электронных таблиц, в том числе и в Excel, и все они не пошли дальше MVP, но это тема отдельной статьи.

Связываем данные

В Excel существует два распространенных инструмента, с помощью которых можно решить задачу связывания данных в таблице с данными в системе: RTD (RealTimeData) и UDF (User-Defined Functions). Чистый RTD менее удобен для пользователя в плане синтаксиса и ограничивает гибкость решения. С помощью UDF можно создать кастомную функцию, которая будет работать привычным для Excel-пользователя образом. Ее можно использовать в других функциях, она понимает ссылки типа A1 или R1C1 и вообще ведет себя как надо. При этом никто не мешает использовать механизм RTD для обновления значения функции (что мы и сделали). UDF мы разрабатывали в виде Excel addin с использованием привычного нам C# и .NET Framework. Для ускорения разработки мы использовали библиотеку Excel DNA. 

Кроме UDF наш addin реализует ribbon (панель инструментов) с настройками и некоторыми полезными функциями по работе с данными.

Добавляем интерактивность

Для передачи данных в Excel и налаживания интерактива мы разработали отдельный сервис, который предоставляет подключение по Websocket при помощи библиотеки SignalR и фактически является брокером для сообщений о событиях, которыми должны обмениваться «фронтовые» части системы в реальном времени. Он у нас называется Notification Service.

Вставляем данные в Excel

В нашем SPA мы подсвечиваем все числа, которые обнаружила система. Пользователь может выделять их, навигировать по ним и т.п. Для вставки данных мы реализовали 3 механизма, чтобы закрыть различные варианты использования:

  • Перетаскивание (drag-and-drop)
  • Автоматическая вставка по клику в SPA
  • Копирование и вставка через клипборд

Когда пользователь инициирует drag’n’drop некоторого числа из SPA, для перетаскивания формируется ссылка с идентификатором этого числа из нашей системы (.../unifiedId/005F5549CDD04F8000010405FF06009EB57C0D985CD001). При вставке в Excel наш addin перехватывает событие вставки и парсит регэкспом вставляемый текст. При обнаружении валидной ссылки на лету подменяет ее на соответствующую формулу =ExrcP(...).

При клике на числе в SPA через Notification Service отправляется сообщение в addin, содержащее все необходимые данные для вставки формулы. Далее формула просто вставляется в текущую выделенную ячейку.

Эти способы хороши, когда пользователю нужно вставлять в свою модель по одному числу, но если надо перенести целую таблицу или ее часть, необходим другой механизм. Наиболее привычным для пользователей представляется копирование через клипборд. Однако этот способ оказался сложнее первых двух. Дело в том, что для удобства вставляемые данные должны быть представлены в нативном для Excel формате — OpenXML Spreadsheet. Наиболее просто это реализуется используя объектную модель Excel, то есть из addin’а. Поэтому процесс формирования клипборда у нас выглядит так:

  • Пользователь выделяет область с числами в SPA
  • Массив выделенных чисел передается на Notification Service
  • Notification Service передает его в addin
  • Addin формирует OpenXML и вставляет его в клипборд
  • Пользователь может вставить данные из клипборда в любое место любой Excel-таблицы.

Несмотря на то, что данные проделывают довольно долгий путь, благодаря SignalR и RTD происходит это довольно быстро и абстрагированно от пользователя. 

Распространяем данные

После того, как пользователь выбрал начальные данные для своей модели, их надо «распространить» все периоды (года, полугодия и кварталы), которые представляют интерес. Для этих целей одним из параметров нашей UDF является дата (период) данного числа (вспоминаем: «доход за 1 квартал 2020 года»). В Excel существует нативный механизм «распространения» формул, который позволяет заполнить ячейки той же формулой с учетом ссылок, заданных в параметрах. То есть вместо конкретной даты в формулу вставлена ссылка на нее, а далее пользователь «распространяет» ее на другие периоды, при этом в таблицу автоматически загружаются «те же» числа из других периодов. 

А что это там за число?

Теперь у пользователя есть модель на несколько сотен строк и несколько десятков столбцов. И у него может возникнуть вопрос, что же там за число в ячейке L123? Чтобы получить ответ, у нас ему достаточно кликнуть на эту ячейку и в нашем SPA откроется тот самый отчет, на той самой странице, где записано кликнутое число, а число в отчете будет выделено. Вот так:

А если это не просто одно число из отчета, а результат некоторых вычислений на числах, взятых из отчета, то мы подсветим все числа, входящие в вычисляемое в Excel выражение. При этом не происходит загрузки всего приложения и подгрузки всех необходимых данных, как в случае перехода по ссылке.

В качестве заключения

Вот такая, на мой взгляд, нестандартная реализация взаимодействия между Excel и веб-приложением получилась довольно удобной для пользователя. Благодаря использованию Excel порог входа для пользователей из целевой аудитории довольно низкий. При этом мы получаем также всю мощь Excel по работе с числовыми данными. Сами данные всегда остаются связанными с источником, а также связанными во времени. Для целевых клиентов нет необходимости встраивать в бизнес-процесс работы с данными абсолютно новые внешние системы. Наше решение встраивается как дополнительный «инструмент» внутри Excel, что является стандартом де-факто для провайдеров финансовых данных.

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

Снова используем OneDrive и Google Диск. Таблица внедряется на сайт через элемент <iframe>. Корректное отображение контейнера в <iframe> зависит от версии языка разметки вашей страницы — <!DOCTYPE>.

OneDrive — Microsoft

Заходим в OneDrive (требуется авторизация или регистрация). Добавляем файл электронной таблицы. Открываем.
Далее, Файл → Общий доступ → Внедрить.
Настройки и размер по вкусу. Копируем на выбор код внедрения или код JavaScript — вставляем в нужное место страницы.

таблица xls в сайт таблица xls в сайт

Пример.

Google Диск — Документы

Заходим в Google Диск (требуется авторизация или регистрация). Добавляем файл электронной таблицы. Открываем через Google Таблицы.
Далее, Файл → Опубликовать в Интернете → Встроить.
Копируем и вставляем код в нужное место страницы.

таблица xls в сайт

Пример.

Надстройка предназначена для быстрой конвертации выделенного диапазона ячеек в HTML код для вставки на сайт.

При запуске надстройки, формируется панель инструментов (на ленте, на вкладке Надстройки)
с 2 кнопками: экспорт в HTML всей таблицы, или только выделенного диапазона ячеек

панель инструментов надстройки для экспорта таблиц в HTML

Файл надстройки, — во вложении к статье.

Программа корректно обрабатывает объединённые ячейки.
Количество строк заголовка таблицы определяется автоматически

Сформированный HTML код помещается в буфер обмена, а также в браузере открывается результат для визуальной проверки.

Если в папке с файлом надстройки присутствуют CSS файлы, — они все подключаются для просмотра результата с использованием стилей.

Пример исходной таблицы в Excel:

Пример результата в браузере: (с использованием CSS файла)

результат преобразования таблицы Excel в HTML

Когда дело доходит до экономии времени, у каждого свой способ выполнения задач. Возьмем, к примеру, нашу социальную жизнь: мы делимся вещами на каждой платформе — с помощью ссылок или встраивания сообщений. Встраивание сообщений не только экономит наше время, но и улучшает внешний вид наших блогов. Но когда дело доходит до обмена файлами, мы всегда стараемся делиться ссылками. Почему? Если мы тоже можем вставлять файлы, тогда зачем делиться ссылками? Мы уже видели, как встроить документ Word на веб-сайт. В этой статье мы узнаем, как встроить таблицы Excel на свой веб-сайт.

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

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

Войдите в свою учетную запись OneDrive и загрузите в нее лист. Желательно сохранить файл в формате .xlsx.

После загрузки щелкните файл правой кнопкой мыши и выберите параметр «Встроить».embed_sheet_onedrive

В правой части окна откроется новая панель. На панели нажмите «Создать». Он сгенерирует код для встраивания файла.Вставьте таблицы Excel на свой веб-сайт

Теперь вставьте код в любом месте своего блога или веб-сайта.embedding_sheet_link

Когда вы копируете код встраивания, под ним вы также найдете вариант «Настройте внешний вид этой встроенной книги«. Щелкните по нему, и вы откроете для себя некоторые новые настройки того, как должен выглядеть виджет вашего листа. Варианты будут включать:

  1. Что показать
  2. Внешность
  3. Взаимодействие
  4. Размеры
  5. Код для вставки | JavaScriptadditional_sheet_embed_options

1]Что показать

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

2]Внешний вид

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

3]Взаимодействие

Здесь вы можете выбрать, хотите ли вы, чтобы люди могли обрабатывать и фильтровать данные. Пусть люди вводят данные в ячейки, но данные не сохраняются. Всегда начинайте с выбранной ячейки.

4]Размеры

Вы можете выбрать ширину и высоту окна виджета в пикселях.

5]Код для вставки | JavaScript

Здесь вы получите два типа кодов, вы можете выбрать либо код встраивания, либо JavaScript. Если вы запускаете веб-сайт самостоятельно и знаете, как работает JavaScript, вы можете выбрать любой из них.

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

После того, как электронная таблица будет встроена и веб-сайт будет запущен, документ появится на веб-странице в виде виджета.

Читайте дальше: Как встроить презентацию PowerPoint на веб-сайт.

Вставьте таблицы Excel на свой веб-сайт

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

Какие таблицы можно вставлять на сайт 

Для примера я буду рассматривать сайт на WordPress, однако мой способ подойдет практически для любой CMS (таких как 1С-битрикс, ModXJoomlaOpenCart). Чтобы вставить на сайт простой калькулятор, можно установить плагин калькулятора (Calculated Fields Form и т.д.) либо воспользоваться сторонними сервисами для их создания. Создав калькулятор в таком сервисе, можно просто вставить его код на соответствующую страницу. 

Главным недостатком установки калькулятора на сайт является его ограниченный функционал. Как правило, можно вставить 2-3 переменных, которые вводятся пользователем, ответ подсчитывается по заранее установленной формуле. Например, я могу подсчитать количество обоев, требуемых в комнате, но не могу узнать количество разных обоев на всю квартиру. 

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

Как вставить таблицу для расчетов на сайт 

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

Вы можете вставить на сайт виджет таблицы Google Sheets, однако в настоящий момент ее нельзя править. С помощью специальных плагинов можно вывести вывод на сайт таблиц excel, однако обычный посетитель не сможет вносить в неё изменения.  

Диск OneDrive для создания файла Excel

Созданный диск OneDrive

Одним из лучших вариантов решения данного вопроса является вставка виджета таблицы excel из облака OneDrive. Благодаря этому способу пользователь сможет вносить правки в опубликованный файл, не изменяя исходный документ.  

Размещение на сайте документа Excel с возможностью изменения со стороны пользователя 

Чтобы разместить документ Excel в облаке OneDrive необходимо пройти регистрацию на сайте https://www.office.com/?ms.officeurl=webapps Регистрация предельно проста, необходимо указать свой e-mail и пароль, после этого сразу можно начинать пользоваться сервисом.  

Как вставить на сайт таблицу excel для редактирования пользователем

Создаем новый файл excel в облачном сервисе OneDrive

Далее заходим в облачный сервис OneDrive и авторизовываемся в нем с помощью полученного ранее логина и пароля. Вы попадете на страницу с названием “мои файлы”. Теперь можем приступать к созданию таблицы: 

  1. Нажимаем на кнопку “+ создать” и выбираем файл excel. 
  2. Если документ уже готов, то нажимаем на кнопку “добавить”. 
  3. В созданном или загруженном файле excel необходимо выбрать пункт “файл” и нажать на функцию “поделиться”.  
  4. В открывшемся окне выбираем функцию “внедрение” 
  5. Чтобы запустить работу с файлом, необходимо нажать на кнопку “создать”. 
  6. Вам откроется функционал по установке виджета Excel на сайт.  

внедрение таблицы excel на сайт

Чтобы начать установку виджета, необходимо выбрать «внедрение» в открывшемся окне

В открывшейся вкладке нам необходимо внести небольшие изменения, чтобы документ был доступен для редактирования посетителями сайта. В разделе взаимодействие ставим отметку напротив пункта “разрешить пользователям ввод данных в ячейку”. Теперь мы можем установить код HTML в нужное нам место (код находится в нижнем левом углу). Кроме того, здесь можно настроить еще несколько полезных функций: 

  • разрешить пользователю сортировать ячейки 
  • ограничить рабочую область (отлично подойдет для создания таблицы расчетов) 
  • выбрать оптимальные размеры виджета (помогает создавать красивые виджеты) 

настройка виджета excel для сайта

Окончательная настройка виджета excel для сайта. Обязательно поставьте флажок в функции редактирования пользователями

После завершения всех настроек необходимо проверить корректную работу таблицы на сайте. Теперь Вы знаете, как вставить на сайт таблицу excel с возможностью редактирования посетителями сайта. 

Пример редактируемой таблицы excel на сайте

Ячейки с данными можно редактировать.

Понравилась статья? Поделить с друзьями:
  • Приложения excel для бизнеса
  • Применение excel в юриспруденции
  • Приложения doc в pdf word
  • Применение excel в химии
  • Приложению word недостаточно памяти сохранить