Интеграция с microsoft excel

Связь с другими программами

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

В
этой главе вы узнаете о связи Microsoft
Project
с другими программами. Обме­ниваясь
данными с программой Microsoft
Excel
[Майкрософт Эксел], вы можете выполнить
сложные расчеты с данными проекта,
создать разнообразные диа­граммы, а
также включить электронную таблицу в
план проекта.

Если
ваш план проекта получился достаточно
большим, может оказаться удоб­ней
работать с данными проекта, используя
базу данных программы Microsoft
Access
[Майкрософт Эксес]. Эту программу также
удобно использовать для по­полнения
существующей базы данных информацией
из проекта и, наоборот, для включения
базы данных в план.

Импортировав
план проекта в программу Microsoft
Outlook
[Майкрософт Аутлук], можно
создать механизм напоминания сотрудникам
о необходимости выполне­ния
определенной работы в заданное время.
Если вы создали в Microsoft
Outlook
список
людей, его можно включить в проект как
дополнительные ресурсы.

Если
экспортировать план проекта в Web-формат
и разместить его на сайте, то с
планом сразу могут познакомиться другие
участники и заказчик, что сущест­венно
повысит эффективность совместной работы
над проектом.

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

Интеграция с программой Microsoft Excel

При
создании проекта может оказаться, что
у некоторых участников проекта установлена
только программа Microsoft
Excel.
В этом случае следует воспользо­ваться
возможностью интеграции программ
Microsoft
Project
и Microsoft
Excel.
Кроме того, Microsoft
Excel
полезно использовать для выполнения
сложных рас­четов
с данными проекта, создания разнообразных
диаграмм. В этом разделе вы рассмотрите
интеграцию с программой Microsoft
Office
Excel
2003, т.е. узнаем, как
копировать электронную таблицу в план
проекта, перемещать диаграмму Ганта
в документ Microsoft
Excel,
импортировать и экспортировать план
проекта.

Сначала
скопируем ячейки электронной таблицы
в план проекта.

  • Нажмите
    кнопку Пуск
    (Start)
    на Панели
    задач
    (Taskbar)
    операционной системы
    Windows.
    На экране появится основное меню.

  • Выберите
    команду Все
    программы ♦
    Microsoft
    Office
    Microsoft
    Office
    Excel
    2003
    (All
    Programs
    ♦ Microsoft
    Office
    ♦ Microsoft
    Office
    Excel
    2003) из основного
    меню. На экране появится рабочее окно
    программы Microsoft
    Excel
    (Рис.
    7.1).


Рис.
7.1. Рабочее окно программы
Microsoft
Excel

  • Нажмите
    комбинацию клавиш Alt+F1.
    чтобы закрыть Область
    задач
    (Task
    Рапе)
    в правой части рабочего окна программы
    Microsoft
    Excel
    (Рис. 7.2).

  • В
    ячейку А1 введите слово Microsoft.

Рис.
7.2. Область задач (
Task
Pane)
скрыта

  • В
    ячейку А2 введите слово Project
    (Рис. 7.3).

Рис.
7.3. Заполненные ячейки

  • Установите
    указатель мыши на ячейку А1.

  • Нажмите
    и удерживайте левую кнопку мыши.

  • Не
    отпуская левую кнопку мыши, переместите
    мышь к ячейке А2.

  • Отпустите
    левую кнопку мыши. Диапазон ячеек А1
    :А2 будет выделен.

  • Нажмите
    кнопку копировать
    на панели инструментов Стандартная
    (Standard).
    Выде­ленный
    диапазон ячеек будет скопирован в буфер
    обмена.

  • Щелкните
    мышью на кнопке с программой Microsoft
    Project
    на Панели
    задач
    (Taskbar)
    для перехода к данной программе.

  • Нажмите
    кнопку создания нового документа на
    панели инструментов Стандартная
    (Standard),
    чтобы открыть
    новый документ.

  • Щелкните
    мышью на первой ячейке столбца Название
    задачи
    (Task
    Name).

  • Нажмите
    кнопку вставить
    на панели инструментов Стандартная
    (Standard).
    В окне программы
    Microsoft
    Project
    появится список задач (Рис. 7.4).

Рис.
7.4. Вставленные данные из электронной
таблицы

Иными
словами, программа Microsoft
Project
интерпретировала вставленные из
электронной
таблицы данные как список задач.

  • Выберите
    команду меню Файл
    ♦ Закрыть
    (File
    ♦ Close).
    На экране появится диалог
    с вопросом о сохранении документа (Рис.
    7.5).

Рис.
7.5. Диалог с вопросом о сохранении
документа

  • Нажмите
    кнопку Нет
    (No),
    чтобы закрыть диалог и не сохранять
    документ.

Теперь
скопируем диаграмму Ганта в программу
Microsoft
Excel.

  • Выберите
    команду меню Вид
    ♦ Диаграмма Ганта
    (View
    ♦ Gantt
    Chart)
    для перехода
    к диаграмме Ганта в нашем плане проекта.

  • Перетащите
    мышью полоску, разделяющую список задач
    и диаграмму Ганта, в крайнее левое
    положение, чтобы весь экран занимала
    диаграмма (Рис. 7.6).

Рис.
7.6. Диаграмма Ганта

  • Выберите
    команду меню Правка
    ♦ Копировать рисунок
    (Edit

    Сору
    Picture).
    На экране появится диалог Копирование
    рисунка
    (Copy
    Picture)
    (Рис.
    7.7).

Рис.
7.7. Диалог
Копирование
рисунка
(Copy
Picture)

  • Если
    в группе элементов управления
    Преобразовать
    изображение
    (Render
    image)
    не установлен переключатель для
    отображения на экране
    (For
    screen),
    то установите его, чтобы скопировать
    рисунок в буфер обмена.

  • Убедитесь,
    что в группе Копировать
    (Сору)
    установлен переключатель отображаемые
    строки
    (Rows
    on
    screen)
    для копирования всего содержимого
    рабочего
    окна программы.

  • Если
    в группе Шкала
    времени
    (Timescale)
    не установлен переключатель как
    на
    экране
    (As
    shown
    on
    screen),
    то установите его, чтобы при копировании
    сохранить
    шкалу времени неизменной.

  • Нажмите
    кнопку ОК, чтобы закрыть диалог
    Копирование
    рисунка
    (Сору
    Picture).
    Диаграмма Ганта будет скопирована в
    буфер обмена.

  • С
    помощью мыши верните полоску, разделяющую
    список задач и диаграмму Ганта,
    в прежнее центральное положение.

  • Щелкните
    мышью на кнопке с программой Microsoft
    Excel
    на Панели
    задач
    (Taskbar)
    для перехода к данной программе.

  • Щелкните
    мышью на ячейке A3.

  • Выберите
    команду меню Правка
    ♦ Вставить
    (Edit
    ♦ Insert).
    В электронную таблицу
    будет вставлена диаграмма Ганта (Рис.
    7.8).

Рис.
7.8.
Диаграмма
Ганта в
Excel

Сейчас
импортируем план проекта из Microsoft
Excel
в Microsoft
Project.

  • Нажмите
    кнопку создания нового документа на
    панели инструментов Стандартная
    (Standard),
    чтобы открыть новый документ в Microsoft
    Excel.

  • Если
    в рабочем окне программы Microsoft
    Excel
    отсутствует панель Область
    задач
    (Task
    Pane),
    то выберите команду меню Вид
    ♦ Панели инструментов ♦
    Область
    задач
    (View
    ♦ Toolbars
    ♦ Task
    Pane).
    В правой части рабочего окна программы
    Microsoft
    Excel
    появится панель Область
    задач
    (Task
    Pane)
    (Рис. 7.1).

  • Из
    открывающегося списка в верхней части
    Области
    задач
    (Task
    Pane)
    выберите
    Создание
    книги
    (New
    Workbook).
    Вид панели Область
    задач
    (Task
    Pane)
    изменится (Рис. 7.9).

Рис.
7.9. Панель
Создание
книги
(New
Workbook)

  • В
    разделе Шаблоны
    (Templates)
    на панели Создание
    книги
    (New
    Workbook)
    щелкните
    мышью на ссылке На
    моем компьютере
    (On
    my
    computer),
    чтобы открыть
    диалог Шаблоны
    (Templates).

  • Выберите
    вкладку Решения
    (Spreadsheet
    Solutions) (Рис.
    7.10).

Рис.
7.10.
Вкладка
Решения
(Spreadsheet
Solutions)
диалога
Шаблоны
(Templates)

  • Щелкните
    мышью на значке с надписью Шаблон
    импорта
    списка
    задач
    Microsoft
    Project
    (Microsoft
    Project Task List Import Template).

  • Нажмите
    кнопку OK,
    чтобы закрыть диалог Шаблоны
    (Templates).

  • В
    окне программы Microsoft
    Excel
    выберите лист Таблица_задач
    (TaskJTable)
    (Рис. 7.11).

Рис.
7.11. Шаблон для списка задач

Обратите
внимание, что названия столбцов шаблона
практически совпадают с названиями
полей списка задач Microsoft
Project.

  • В
    ячейку А2 введите номер задачи 1.

  • В
    ячейку В2 введите название работы
    Обустройство
    двора.

  • В
    ячейку С2 введите длительность задачи
    5
    дней
    (5
    days).

  • Выберите
    команду меню Файл
    ♦ Сохранить как
    (File
    ♦ Save
    As).
    На экране появится
    диалог Сохранение
    документа
    (Save
    As)
    (Рис. 7.12).

Рис.
7.12. Диалог
Сохранение
документа
(Save
As)

  • В
    открывающемся списке Папка
    (Save
    in)
    выберите диск для документа.

  • В
    списке файлов и каталогов выберите
    папку, в которой будет сохранен документ.

  • Убедитесь,
    что в открывающемся списке Тип
    файла
    (Save
    as
    type)
    выбрана строка
    Книга
    Microsoft
    Office
    Excel
    (Microsoft
    Office
    Excel
    Workbook)
    для сохранения
    документа в виде электронной таблицы.

  • В
    поле ввода Имя
    файла
    (File
    name)
    введите имя создаваемого файла
    Импорт-таблица.
    Расширение
    .xls
    будет
    присвоено имени файла автоматически.

  • Нажмите
    кнопку Сохранить
    (Save),
    чтобы закрыть диалог Сохранение
    доку­
    мента
    (Save
    As).
    Документ будет сохранен на диске.

  • Щелкните
    мышью на кнопке с программой Microsoft
    Project
    на Панели
    задач
    (Taskbar)
    для перехода к данной программе.

  • Нажмите
    кнопку Открыть на панели инструментов
    Стандартная
    (Standard).
    На экране
    появится диалог Открытие
    документа
    (Open)
    (Рис. 7.13).

Рис.
7.13. Диалог
Открытие
документа
(Open)

  • В
    открывающемся списке Папка
    (Look
    in)
    выберите диск, на котором хра­нится
    документ Импорт-таблица.

  • В
    списке файлов и каталогов выберите
    папку с документом.

  • В
    открывающемся списке Тип
    файла
    (File
    of
    type)
    выберите строку Книги
    Microsoft
    Excel
    (Microsoft
    Excel
    Workbooks)
    для загрузки электронной таблицы.

  • Щелкните
    мышью на имени файла Импорт-таблица
    в
    списке каталогов.

  • Нажмите
    кнопку Открыть
    (Open).
    Диалог Открытие
    документа
    (Open)
    будет закрыт,
    а на экране появится первый диалог
    мастера импорта (Рис. 7.14).

Рис.
7.14. Первый диалог мастера импорта

  • Нажмите
    кнопку Далее
    (Next).
    На экране появится второй диалог мастера
    импорта
    (Рис. 7.15). В английской версии программы
    этому диалогу предше­ствует диалог
    выбора формата данных.

Рис.
7.15. Второй диалог мастера импорта

  • Установите
    переключатель Создать
    новую схему
    (New
    map)
    для создания новой
    схемы импорта.

  • Нажмите
    кнопку Далее
    (Next).
    На экране появится третий диалог мастера
    импорта
    (Рис. 7.16).


Рис.
7.16. Третий диалог мастера импорта

  • Если
    не установлен переключатель Создать
    новый проект
    (As
    a
    new
    project),
    то установите его, чтобы при импорте
    документа был создан новый проект.

  • Нажмите
    кнопку Далее
    (Next).
    На экране появится четвертый диалог
    мастера импорта (Рис. 7.17).

Рис.
7.17. Четвертый диалог мастера импорта

  • В
    группе элементов управления Выберите
    тип данных для импорта
    (Select
    the
    types
    of
    data
    you
    want
    to
    import)
    установите флажок Задачи
    (Tasks)
    для импорта
    задач.

  • Нажмите
    кнопку Далее
    (Next).
    На экране появится пятый диалог мастера
    им­порта (Рис. 7.18).

Рис.
7.18. Пятый диалог мастера импорта

В
столбцах Из:
поле
Excel
(From:
Excel
Fields)
и В:
поле
Microsoft
Project
(To:
Microsoft
Office
Project
Field)
центральной таблицы диалога отображаются
на­звания
полей программ Microsoft
Excel
и Microsoft
Project,
которые будут соот­ветствовать
друг другу при импорте. Эти поля можно
изменить, но предлагае­мый
по умолчанию вариант является приемлемым.

  • Нажмите
    кнопку Далее
    (Next).
    На экране появится последний диалог
    мастера импорта (Рис. 7.19).

Рис.
7.19. Последний диалог мастера импорта

  • Нажмите
    кнопку Готово
    (Finish),
    чтобы завершить работу мастера импорта.
    В
    окне программы Microsoft
    Project
    появится импортированный план проекта
    (Рис. 7.20).

Рис.
7.20. Импортированный план проекта

  • Выберите
    команду меню Файл
    ♦ Закрыть
    (File
    ♦ Close).
    На экране появится диалог с предложением
    сохранить документ (Рис. 7.21).

Рис.
7.21. Диалог с предложением сохранить
документ

  • Нажмите
    кнопку Нет
    (No),
    чтобы отказаться от сохранения
    импортированного документа на диске.
    Диалог закроется, а в окне программы
    снова появится план
    проекта строительства дома.

Давайте
экспортируем план проекта из программы
Microsoft
Project
в Microsoft
Excel.

  • В
    Microsoft
    Project
    выберите команду меню Файл
    ♦ Сохранить как
    (File
    ♦Save
    As).
    На экране появится диалог Сохранение
    документа
    (Save
    As)
    (Рис.
    7.22).

Рис.
7.22.
Диалог
Сохранение
документа
(Save
As)

  • В
    открывающемся списке Папка
    (Save
    in)
    выберите диск для документа.

  • В
    списке файлов и каталогов выберите
    папку, в которой будет сохранен документ.

  • В
    открывающемся списке Тип
    файла
    (Save
    as
    type)
    выберите строку Книга
    Microsoft
    Excel
    (Microsoft
    Excel
    Workbook)
    для экспорта документа в электронную
    таблицу.

  • В
    поле ввода Имя
    файла
    (File
    name)
    введите имя создаваемого файла
    Экспорт-
    таблица.
    Расширение
    .xls
    будет
    присвоено имени файла автоматически.

  • Нажмите
    кнопку Сохранить
    (Save),
    чтобы закрыть диалог Сохранение
    доку­
    мента
    (Save
    As).
    На экране появится первый диалог мастера
    экспорта (Рис. 7.23).

Рис.
7.23.Первый диалог мастера экспорта

  • Нажмите
    кнопку Далее
    (Next).
    На экране появится второй диалог мастера
    экспорта
    (Рис. 7.24).

Рис.
7.24. Второй диалог мастера экспорта

  • Установите
    переключатель Шаблон
    проекта (
    Excel)
    (Project
    Excel
    Template),
    чтобы
    использовать шаблон проекта программы
    Microsoft
    Excel
    при экспорте.

  • Нажмите
    кнопку Готово
    (Finish)
    для завершения работы мастера экспорта.

  • Щелкните
    мышью на кнопке с программой Microsoft
    Excel
    на Панели
    задач
    (Taskbar)
    для перехода к данной программе.

  • Нажмите
    кнопку Открыть
    на панели инструментов Стандартная
    (Standard).
    На
    экране появится диалог Открытие
    документа
    (Open)
    (Рис. 7.25).

Рис.
7.25. Диалог
Открытие
документа
(Open)

  • В
    открывающемся списке Папка
    (Look
    in)
    выберите диск, на котором хранится
    документ Экпорт-таблица.

  • В
    списке файлов и каталогов выберите
    папку с документом.

  • Щелкните
    мышью на имени файла Экпорт-таблица
    в
    списке файлов и каталогов.

  • Нажмите
    кнопку Открыть
    (Open).
    Диалог Открытие
    документа
    (Open)
    будет закрыт,
    а в окне программы Microsoft
    Excel
    на листе Таблица_задач
    (Task_Table)
    появится экспортированный из Microsoft
    Project
    список задач плана
    проекта (Рис. 7.26).

Обратите
внимание, что формат представления
экспортированного плана проекта похож
на исходный вариант плана в Microsoft
Project.

Рис.
7.26. Экспортированный в
Microsoft
Excel
список задач

  • Щелкните
    мышью на ярлыке листа Таблица_ресурсов
    (Resource_Table).
    В
    окне программы появится экспортированный
    из Microsoft
    Project
    список ресурсов
    плана проекта (Рис. 7.27).

Рис.
7.27. Экспортированный в
Microsoft
Excel
список ресурсов

  • В
    Microsoft
    Excel
    выберите команду меню Файл
    ♦ Выход
    (File
    ♦ Exit).
    На эк­ране
    появится диалог с предложением сохранить
    документ (Рис. 7.28).

Рис.
7.28. Диалог с предложением сохранить
документ

  • Нажмите
    кнопку Нет
    (No),
    чтобы отказаться от сохранения
    экспортированного
    документа на диске. Диалог закроется,
    и работа программы Microsoft
    Excel
    будет завершена.

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

Соседние файлы в папке лабы Project

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Время на прочтение
6 мин

Количество просмотров 19K

Хотя в среднем для каждодневных задач автоматизация не требуется, бывают случаи, когда она может быть необходима. Создание множества диаграмм, рисунков, таблиц и отчётов может утомить, если вы работаете вручную. Так быть не должно. Специально к старту нового потока курса Fullstack-разработчик на Python делимся с вами кейсом постройки конвейера на Python, с помощью которого Excel и Word легко интегрировать: нужно создать таблицы в Excel, а затем перенести результаты в Word, чтобы практически мгновенно получить отчёт.


Openpyxl

Встречайте Openpyxl — возможно, одну из самых универсальных связок [биндингов] с Python, которая сделает взаимодействие с Excel очень простым. Вооружившись этой библиотекой, вы сможете читать и записывать все нынешние и устаревшие форматы Excel, то есть xlsx и xls. 

Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D и 3D диаграммы, маркировать оси и заголовки, а также предоставляет множество других возможностей, которые могут пригодиться. 

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

Python-docx

Затем идёт Python-docx, этот пакет для Word — то же самое, что Openpyxl для Excel. Если вы ещё не изучили его документацию, вам, вероятно, стоит взглянуть на неё. Python-docx — без преувеличения один из самых простых и понятных мне наборов инструментов, с которыми я работал с тех пор, как начал работать с самим Python. 

Python-docx позволяет автоматизировать создание документов путём автоматической вставки текста, заполнения таблиц и рендеринга изображений в отчёт без каких-либо накладных расходов. Без лишних слов давайте создадим наш собственный автоматизированный конвейер. Запустите Anaconda (или любую другую IDE по вашему выбору) и установите эти пакеты:

pip install openpyxl
pip install python-docx

Автоматизация Microsoft Excel

Сначала загрузим уже созданный лист Excel, вот так:

workbook = xl.load_workbook('Book1.xlsx')
sheet_1 = workbook['Sheet1']

Теперь переберём все строки в нашей таблице, чтобы вычислить и вставить значения мощности, умножив ток на напряжение:

for row in range(2, sheet_1.max_row + 1):
    current = sheet_1.cell(row, 2)
    voltage = sheet_1.cell(row, 3)
    power = float(current.value) * float(voltage.value)
    power_cell = sheet_1.cell(row, 1)
    power_cell.value = power

Как только это будет сделано, мы используем рассчитанные значения мощности, чтобы сгенерировать линейную диаграмму, которая будет вставлена ​​в указанную ячейку, код показан ниже:

values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1)
chart = LineChart()
chart.y_axis.title = 'Power'
chart.x_axis.title = 'Index'
chart.add_data(values)
sheet_1.add_chart(chart, 'e2') 
workbook.save('Book1.xlsx')

Автоматически созданная таблица Excel

Автоматически созданная таблица Excel

Извлечение диаграммы

Теперь, когда мы сгенерировали нашу диаграмму, нам нужно извлечь её как изображение, чтобы мы могли использовать её в нашем отчёте Word. Сначала укажем точное местоположение файла Excel, а также место, где должно быть сохранено изображение диаграммы:

input_file = "C:/Users/.../Book1.xlsx"
output_image = "C:/Users/.../chart.png"

Затем откройте электронную таблицу, используя следующий метод:

operation = win32com.client.Dispatch("Excel.Application")
operation.Visible = 0
operation.DisplayAlerts = 0
workbook_2 = operation.Workbooks.Open(input_file)
sheet_2 = operation.Sheets(1)

Позднее вы сможете перебирать все объекты диаграммы в электронной таблице (если их несколько) и сохранять их в указанном месте:

for x, chart in enumerate(sheet_2.Shapes):
    chart.Copy()
    image = ImageGrab.grabclipboard()
    image.save(output_image, 'png')
    pass
workbook_2.Close(True)
operation.Quit()

Автоматизация Microsoft Word

Теперь, когда у нас есть сгенерированное изображение диаграммы, мы должны создать шаблон документа, который в принципе является обычным документом Microsoft Word (.docx), сформированным именно так, как мы хотим: отчёт содержит шрифты, размеры шрифтов, структуру и форматирование страниц. 

Теперь всё, что нам нужно сделать, — создать плейсхолдеры для сгенерированного нами контента, то есть табличные значения и изображения, и объявить их с именами переменных, как показано ниже.

Шаблон документа Microsoft Word

Шаблон документа Microsoft Word

Любой сгенерированный контент, включая текст и изображения, может быть объявлен в двойных фигурных скобках {{ variable_name }}. В случае таблиц вам нужно создать таблицу со строкой шаблона со всеми включёнными столбцами, затем нужно добавить одну строку вверху и одну строку ниже со следующей нотацией:

Первая строка:

{%tr for item in variable_name %}

Последняя строка:

{%tr for item in variable_name %}

На рисунке выше — имена переменных:

  • table_contents для словаря Python, в котором будут храниться наши табличные данные;

  • Index для ключей словаря (первый столбец);

  • Power, Current и Voltage для значений словаря (второй, третий и четвёртый столбцы).

Затем импортируем наш шаблонный документ в Python и создаём словарь, в котором будут храниться значения нашей таблицы:

template = DocxTemplate('template.docx')
table_contents = []
for i in range(2, sheet_1.max_row + 1):
    table_contents.append({
        'Index': i-1,
        'Power': sheet_1.cell(i, 1).value,
        'Current': sheet_1.cell(i, 2).value,
        'Voltage': sheet_1.cell(i, 3).value
        })

Далее импортируем ранее созданное в Excel изображение диаграммы и создадим другой словарь для создания экземпляров всех объявленных в документе шаблона переменных-заполнителей:

image = InlineImage(template,'chart.png',Cm(10))
context = {
    'title': 'Automated Report',
    'day': datetime.datetime.now().strftime('%d'),
    'month': datetime.datetime.now().strftime('%b'),
    'year': datetime.datetime.now().strftime('%Y'),
    'table_contents': table_contents,
    'image': image
    }

И, наконец, визуализируем отчёт с нашей таблицей значений и изображением диаграммы:

template.render(context)
template.save('Automated_report.docx')

Результаты

И вот — автоматически сгенерированный отчёт Microsoft Word с числами и созданной в Microsoft Excel диаграммой. Мы получили полностью автоматизированный конвейер, его можно использовать, чтобы создать столько таблиц, диаграмм и документов, сколько вам потребуется.

Автоматически сгенерированный отчёт

Автоматически сгенерированный отчёт

Исходный код

import openpyxl as xl
from openpyxl.chart import LineChart, Reference

import win32com.client
import PIL
from PIL import ImageGrab, Image
import os
import sys

from docx.shared import Cm
from docxtpl import DocxTemplate, InlineImage
from docx.shared import Cm, Inches, Mm, Emu
import random
import datetime
import matplotlib.pyplot as plt


######## Generate automated excel workbook ########

workbook = xl.load_workbook('Book1.xlsx')
sheet_1 = workbook['Sheet1']
  
for row in range(2, sheet_1.max_row + 1):
    current = sheet_1.cell(row, 2)
    voltage = sheet_1.cell(row, 3)
    power = float(current.value) * float(voltage.value)
    power_cell = sheet_1.cell(row, 1)
    power_cell.value = power
  
values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1)
chart = LineChart()
chart.y_axis.title = 'Power'
chart.x_axis.title = 'Index'
chart.add_data(values)
sheet_1.add_chart(chart, 'e2')
  
workbook.save('Book1.xlsx')


######## Extract chart image from Excel workbook ########

input_file = "C:/Users/.../Book1.xlsx"
output_image = "C:/Users/.../chart.png"

operation = win32com.client.Dispatch("Excel.Application")
operation.Visible = 0
operation.DisplayAlerts = 0
    
workbook_2 = operation.Workbooks.Open(input_file)
sheet_2 = operation.Sheets(1)
    
for x, chart in enumerate(sheet_2.Shapes):
    chart.Copy()
    image = ImageGrab.grabclipboard()
    image.save(output_image, 'png')
    pass

workbook_2.Close(True)
operation.Quit()


######## Generating automated word document ########

template = DocxTemplate('template.docx')

#Generate list of random values
table_contents = []

for i in range(2, sheet_1.max_row + 1):
    
    table_contents.append({
        'Index': i-1,
        'Power': sheet_1.cell(i, 1).value,
        'Current': sheet_1.cell(i, 2).value,
        'Voltage': sheet_1.cell(i, 3).value
        })

#Import saved figure
image = InlineImage(template,'chart.png',Cm(10))

#Declare template variables
context = {
    'title': 'Automated Report',
    'day': datetime.datetime.now().strftime('%d'),
    'month': datetime.datetime.now().strftime('%b'),
    'year': datetime.datetime.now().strftime('%Y'),
    'table_contents': table_contents,
    'image': image
    }

#Render automated report
template.render(context)
template.save('Automated_report.docx')

Вот мой репозиторий на GitHub с шаблоном документа и исходным кодом для этого туториала. А вот ссылка на курс Fullstack-разработчик на Python, который сделает из вас настоящего универсального солдата от кодинга.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

  • Профессия Data Scientist

  • Профессия Data Analyst

  • Курс по Data Engineering

Другие профессии и курсы

Содержание

  1. Как скрестить Excel c интерактивным веб-приложением
  2. Что у нас уже было
  3. Связываем данные
  4. Добавляем интерактивность
  5. Вставляем данные в Excel
  6. Распространяем данные
  7. А что это там за число?
  8. В качестве заключения
  9. Бесшовная интеграция Microsoft Excel и Word с помощью Python
  10. Openpyxl
  11. Python-docx
  12. Автоматизация Microsoft Excel
  13. Извлечение диаграммы
  14. Автоматизация Microsoft Word
  15. Результаты
  16. Исходный код

Как скрестить Excel c интерактивным веб-приложением

Не секрет, что 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 может быть применим и для решения других задач, требующих интерактива и сложных пользовательских интерфейсов при работе с числовыми и табличными данными.

Источник

Бесшовная интеграция Microsoft Excel и Word с помощью Python

Хотя в среднем для каждодневных задач автоматизация не требуется, бывают случаи, когда она может быть необходима. Создание множества диаграмм, рисунков, таблиц и отчётов может утомить, если вы работаете вручную. Так быть не должно. Специально к старту нового потока курса Fullstack-разработчик на Python делимся с вами кейсом постройки конвейера на Python, с помощью которого Excel и Word легко интегрировать: нужно создать таблицы в Excel, а затем перенести результаты в Word, чтобы практически мгновенно получить отчёт.

Openpyxl

Встречайте Openpyxl — возможно, одну из самых универсальных связок [биндингов] с Python, которая сделает взаимодействие с Excel очень простым. Вооружившись этой библиотекой, вы сможете читать и записывать все нынешние и устаревшие форматы Excel, то есть xlsx и xls.

Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D и 3D диаграммы, маркировать оси и заголовки, а также предоставляет множество других возможностей, которые могут пригодиться.

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

Python-docx

Затем идёт Python-docx, этот пакет для Word — то же самое, что Openpyxl для Excel. Если вы ещё не изучили его документацию, вам, вероятно, стоит взглянуть на неё. Python-docx — без преувеличения один из самых простых и понятных мне наборов инструментов, с которыми я работал с тех пор, как начал работать с самим Python.

Python-docx позволяет автоматизировать создание документов путём автоматической вставки текста, заполнения таблиц и рендеринга изображений в отчёт без каких-либо накладных расходов. Без лишних слов давайте создадим наш собственный автоматизированный конвейер. Запустите Anaconda (или любую другую IDE по вашему выбору) и установите эти пакеты:

Автоматизация Microsoft Excel

Сначала загрузим уже созданный лист Excel, вот так:

Теперь переберём все строки в нашей таблице, чтобы вычислить и вставить значения мощности, умножив ток на напряжение:

Как только это будет сделано, мы используем рассчитанные значения мощности, чтобы сгенерировать линейную диаграмму, которая будет вставлена ​​в указанную ячейку, код показан ниже:

Автоматически созданная таблица Excel

Извлечение диаграммы

Теперь, когда мы сгенерировали нашу диаграмму, нам нужно извлечь её как изображение, чтобы мы могли использовать её в нашем отчёте Word. Сначала укажем точное местоположение файла Excel, а также место, где должно быть сохранено изображение диаграммы:

Затем откройте электронную таблицу, используя следующий метод:

Позднее вы сможете перебирать все объекты диаграммы в электронной таблице (если их несколько) и сохранять их в указанном месте:

Автоматизация Microsoft Word

Теперь, когда у нас есть сгенерированное изображение диаграммы, мы должны создать шаблон документа, который в принципе является обычным документом Microsoft Word (.docx), сформированным именно так, как мы хотим: отчёт содержит шрифты, размеры шрифтов, структуру и форматирование страниц.

Теперь всё, что нам нужно сделать, — создать плейсхолдеры для сгенерированного нами контента, то есть табличные значения и изображения, и объявить их с именами переменных, как показано ниже.

Шаблон документа Microsoft Word

Любой сгенерированный контент, включая текст и изображения, может быть объявлен в двойных фигурных скобках << variable_name >>. В случае таблиц вам нужно создать таблицу со строкой шаблона со всеми включёнными столбцами, затем нужно добавить одну строку вверху и одну строку ниже со следующей нотацией:

На рисунке выше — имена переменных:

table_contents для словаря Python, в котором будут храниться наши табличные данные;

Index для ключей словаря (первый столбец);

Power, Current и Voltage для значений словаря (второй, третий и четвёртый столбцы).

Затем импортируем наш шаблонный документ в Python и создаём словарь, в котором будут храниться значения нашей таблицы:

Далее импортируем ранее созданное в Excel изображение диаграммы и создадим другой словарь для создания экземпляров всех объявленных в документе шаблона переменных-заполнителей:

И, наконец, визуализируем отчёт с нашей таблицей значений и изображением диаграммы:

Результаты

И вот — автоматически сгенерированный отчёт Microsoft Word с числами и созданной в Microsoft Excel диаграммой. Мы получили полностью автоматизированный конвейер, его можно использовать, чтобы создать столько таблиц, диаграмм и документов, сколько вам потребуется.

Автоматически сгенерированный отчёт

Исходный код

Вот мой репозиторий на GitHub с шаблоном документа и исходным кодом для этого туториала. А вот ссылка на курс Fullstack-разработчик на Python, который сделает из вас настоящего универсального солдата от кодинга.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Источник

Содержание

  • Вариант 1: Microsoft Office 2007 – 2021
    • Шаг 1: Подготовка данных таблицы Microsoft Excel
    • Шаг 2: Подготовка шаблона документа Microsoft Word
    • Шаг 3: Добавление поля слияния на страницу
    • Шаг 4: Проверка результатов
    • Шаг 5: Завершение слияния
  • Вариант 2: Microsoft Office 2003
  • Вопросы и ответы

как сделать слияние word и excel

Вариант 1: Microsoft Office 2007 – 2021

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

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

Подробнее: Как перенести таблицу из Microsoft Excel в Word со связью

как сделать слияние word и excel_01

Важно! Все рассмотренные далее действия будут выполняться на примере программного обеспечения Microsoft Office 2016. По этой причине могут наблюдаться некоторые отличия в интерфейсе в сравнении с другими версиями текстового редактора. Но руководство все равно является актуальными, а серьезные отличия будут помечаться.

Шаг 1: Подготовка данных таблицы Microsoft Excel

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

Подробнее: Как разъединить ячейки в Microsoft Excel

как сделать слияние word и excel_02

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

Подробнее: Как сделать заголовок столбцов в Microsoft Excel

как сделать слияние word и excel_03

Если база данных с исходными значениями создается в Microsoft Excel с нуля, рекомендуем воспользоваться «Умной таблицей». Это позволит облегчить соблюдение всех вышеописанных требований. На нашем сайте есть статья, в которой подробно рассматривается использование этой функции табличного редактора.

Подробнее: Как создать умную таблицу в Microsoft Excel

как сделать слияние word и excel_04

Lumpics.ru

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

Шаг 2: Подготовка шаблона документа Microsoft Word

Слияние зачастую выполняется для создания однотипных документов с отличиями в определенных местах. Например, эту функцию удобно использоваться для организации массовой рассылки электронной почты или печати документов. Соответственно, предварительно следует подготовить шаблон в Microsoft Word — часть текста, информация в которой будет оставаться неизменной.

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

как сделать слияние word и excel_05

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

Читайте также:
Как убрать красное / синее / зеленое подчеркивание текста в Microsoft Word
Как пропустить все ошибки в документе Microsoft Word

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

  1. Откройте меню «Файл», кликнув по одноименной вкладке в Microsoft Word 2013 – 2021 или нажав по иконке в верхнем левом углу в Microsoft Word 2007 – 2010.
  2. как сделать слияние word и excel_06

  3. На боковой панели слева щелкните по пункту «Параметры», чтобы открыть окно настроек программы.
  4. как сделать слияние word и excel_07

  5. Воспользовавшись навигационной панелью в левой части интерфейса, перейдите в раздел «Дополнительно» и в блоке «Показать содержимое документа» из выпадающего меню «Затенение полей» выберите значение «Всегда». После этого нажмите по кнопке «ОК», чтобы сохранить изменения.
  6. как сделать слияние word и excel_08

    На этом предварительная настройка документов считается завершенной, можно переходить непосредственно к слиянию Microsoft Word и базы данных Excel.

Шаг 3: Добавление поля слияния на страницу

Все инструменты для выполнения слияния находятся на вкладке «Рассылки». На данном этапе выполнения поставленной задачи важны только два блока инструментов — «Начало слияния» и «Составление документа и вставка полей».

как сделать слияние word и excel_09

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

  1. Раскройте выпадающий список «Начать слияние», который находится в блоке «Начало слияния». Затем кликните в нем по предпочитаемому шаблону. В качестве примера будет выбран пункт «Письма», но работа с другими практически ничем не отличается.
    как сделать слияние word и excel_10

    Примечание! Если в выпадающем меню выбрать «Конверты» или «Наклейки», появится дополнительное диалоговое окно, в котором потребуется задать начальные параметры. Каждое действие сопровождается текстовой подсказкой, поэтому проблем возникнуть не должно. В остальном слияние выполняется описанным ниже способом.

  2. как сделать слияние word и excel_11

  3. Раскройте выпадающее меню «Выбрать получателей», которое расположено в том же блоке чуть ниже. В нем нажмите по опции «Использовать существующий список». Это позволит определить в качестве базы данных с исходными значениями заранее созданную таблицу Microsoft Excel.
  4. как сделать слияние word и excel_12

  5. В появившемся окне файлового менеджера перейдите в директорию, где находится таблица с данными, выделите ее щелчком левой кнопки мыши и нажмите «Открыть».
  6. как сделать слияние word и excel_13

  7. Если файл Excel содержит несколько листов с информацией, выберите необходимый и кликните по кнопке «ОК». Обратите также внимание на пункт «Первая строка данных содержит заголовки столбцов», если этот параметр соответствует действительности, установите отметку напротив него.
    как сделать слияние word и excel_14

    Обратите внимание! Если базу данных с исходными значениями необходимо будет сменить в будущем, воспользуйтесь опцией в блоке «Начало слияния», которая называется «Изменить список получателей». При ее вызове откроется файловый менеджер, в котором потребуется выбрать новую таблицу Excel.

  8. как сделать слияние word и excel_15

  9. Установите курсор в то место документа, куда необходимо вставить информацию, взятую из таблицы. Для этого раскройте в блоке «Составление документа и вставка полей» выпадающий список меню «Вставить поле слияния» и выберите нужный столбец данных. В качестве примера будет добавлено поле «Номер».
  10. как сделать слияние word и excel_16

  11. Аналогичным образом добавьте оставшиеся поля, каждый раз устанавливая курсор в нужное место и выбирая из выпадающего списка соответствующий параметр.
  12. как сделать слияние word и excel_17

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

как сделать слияние word и excel_18

Шаг 4: Проверка результатов

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

как сделать слияние word и excel_19

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

как сделать слияние word и excel_20

Если необходимо проверить заполнение полей определенного получателя, следует воспользоваться диалоговым окном «Найти получателя». Кликните по нему и в появившемся меню введите в поле «Найти» информацию из любого столбца таблицы Excel. Затем определите область поиска. Чтобы повысить точность при обработке большого объема данных, установите переключатель в положение «по полю» и из выпадающего списка выберите непосредственно нужное поле. Затем кликните по кнопке «Найти далее».

как сделать слияние word и excel_21

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

как сделать слияние word и excel_022

Шаг 5: Завершение слияния

После добавления всех необходимых полей на страницу документа и проверки корректности их отображения можно переходить непосредственно к массовой рассылке или печати. Все необходимые для этого инструменты расположены на вкладке «Рассылки» в блоке «Завершение».

как сделать слияние word и excel_23

Открыв выпадающий список пункта «Найти и объединить», можно увидеть три опции:

  1. «Изменить отдельные документы». Позволяет выбрать один документ для редактирования и дальнейшего применения (печати или рассылки). Для этого необходимо будет в блоке «Просмотр результатов» определить нужного получателя, затем установить отметку на пункте «текущую запись» и кликнуть по кнопке «ОК». Если выбрать несколько документов или все, они сольются воедино.
  2. как сделать слияние word и excel_24

  3. «Печать документов». Открывает подобное диалоговое окно, в котором необходимо выбрать количество записей и нажать по кнопке «ОК». В дальнейшем откроется стандартное окно для печати документов.
    как сделать слияние word и excel_25

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

    Подробнее: Как настроить печать документов в Microsoft Word

  4. как сделать слияние word и excel_26

  5. «Отправить электронные сообщения». Предоставляет диалоговое окно для настройки рассылки. Для корректной работы требуется, чтобы в базе данных Excel был отдельный столбец с перечнем адресов электронной почты каждого получателя, иначе этой функцией воспользоваться не получится.
  6. как сделать слияние word и excel_27

Вариант 2: Microsoft Office 2003

В отличие от Microsoft Word 2007 – 2021 в версии 2003 года все ранее описанные действия выполняются иначе. Обусловлено это кардинально отличающимся интерфейсом программы. Но стоит отметить, что этапы выполнения поставленной задачи остаются неизменными. По этой причине ниже будет пропущена часть о подготовке базы данных в таблице Microsoft Excel и создании шаблона в текстовом редакторе. Также описание каждой функции будет кратким, так как полное уже приводилось выше в статье.

Примечание! Microsoft Word 2003 не имеет совместимости с новейшим форматом XSLX, поэтому, чтобы выполнить слияние, базу данных в Excel необходимо сохранять в формате XLS.

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

  1. Раскройте меню «Сервис», находящийся в верхней части интерфейса окна, и наведите курсор на пункт «Письма и рассылки», затем кликните по опции «Слияние».
  2. как сделать слияние word и excel_28

  3. В появившейся панели Мастера, расположенной в правой части окна, выберите из списка тип документа и щелкните «Далее. Открытие документа». Как и в примере ранее, сейчас будет выбран шаблон «Письма».
  4. как сделать слияние word и excel_29

  5. Определите документ, на основе которого будет осуществляться рассылка. Если шаблон создавался в текущем, выберите соответствующий пункт и нажмите «Далее. Выбор типа документа».
  6. как сделать слияние word и excel_30

  7. Возьмите в качестве исходного списка получателей заранее созданную таблицу Microsoft Excel. Для этого установите курсор в положение «Использование списка» и кликните по ссылке «Обзор», находящейся чуть ниже.
  8. как сделать слияние word и excel_31

  9. В новом окне файлового менеджера перейдите в директорию с нужным документом, выделите его и щелкните по кнопке «Открыть».
  10. как сделать слияние word и excel_32

  11. По аналогии с ранее рассмотренными версиями текстового процессора выберите лист книги с нужной информацией, установите при необходимости отметку напротив пункта «Первая строка данных содержит заголовки столбцов» и нажмите «ОК».
  12. как сделать слияние word и excel_33

  13. Поставьте отметки напротив тех строк списка, информация из которых необходима для создания слияния. В нижней части этого диалогового окна есть кнопки с дополнительными функциями. Посредством них можно сразу снять или добавить выделения на все пункты, выполнить поиск или замену. После завершения этой процедуры нажмите «ОК».
  14. как сделать слияние word и excel_34

  15. Вернувшись в главное окно текстового редактора, кликните по пункту «Далее. Создание писем», расположенном на панели мастера.
  16. как сделать слияние word и excel_35

  17. Установите курсор на странице документа в то место, куда будет вставлено поле, затем щелкните по строке «Другие элементы».
  18. как сделать слияние word и excel_36

  19. В новом окне поставьте переключатель в положение «Поля базы данных», выделите в списке нужное поле и кликните по кнопке «Вставить». Проследите за тем, чтобы на странице документа появилась соответствующая надпись.
  20. как сделать слияние word и excel_37

  21. Закройте окно, установите курсор в новое положение, а затем снова кликните по пункту «Другие элементы» и вставьте новое поле. Таким образом добавьте все необходимые элементы на страницу. После этого щелкните «Далее. Просмотр писем».
  22. как сделать слияние word и excel_38

  23. Воспользовавшись предложенными инструментами на панели Мастера, просмотрите все экземпляры документов и выявите неточности, впоследствии исправив их. Также с помощью кнопки «Исключить получателя» можно убрать лишние дубликаты. После завершения этой процедуры кликните по пункту «Далее. Завершение слияния».
  24. как сделать слияние word и excel_39

  25. Завершите слияние, нажав по строке «Печать». После этого откроется новое диалоговое окно, в котором останется выбрать количество печатаемых экземпляров. Также можно отдельно изменить часть писем, воспользовавшись соответствующей опцией на панели Мастера.
  26. как сделать слияние word и excel_40

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

Из песочницы, Разработка веб-сайтов, Разработка под Windows, Проектирование и рефакторинг, Разработка для Office 365


Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/

Не секрет, что 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 может быть применим и для решения других задач, требующих интерактива и сложных пользовательских интерфейсов при работе с числовыми и табличными данными.

Like this post? Please share to your friends:
  • Интеграция данных в excel
  • Интеграция в excel это
  • Интеграция pdf в word
  • Интеграция excel в powerpoint
  • Интегральный процент в excel это