Можно ли программно манипулировать рисунками Visio?

Я разрабатываю приложение для автоматической документации на Python. Одной из обязательных функций является рисование блок-схем. Поскольку пользователи используют Visio, я хотел бы создавать блок-схемы в формате Visio, чтобы пользователь мог вносить точные корректировки в рисунок, не имея навыков программирования. Я ищу надстройки VSTO для Office, и хотя кажется возможным использовать его для программного создания рисунков Visio, неясно, можно ли использовать его с моим приложением Python. Можно ли использовать Python для отправки информации в надстройку VSTO и использования ее для построения блок-схемы в Visio на основе этой информации? Как это можно реализовать? Есть ли какие-либо другие рекомендации о том, как программно создать блок-схему в формате, который пользователи могут редактировать с помощью редактора векторной графики?

Это больше похоже на "философский" вопрос, речь не совсем о программировании. Возможно, вам повезет больше, если вы спросите что-то подобное на специальном ресурсе Visio, таком как visguy.com/vgforum. Но в принципе можно генерировать диаграммы Visio и с помощью python (учитывая, что python работает на той же машине, что и пользователь, и Visio установлен на той же машине).

Nikolay 25.01.2023 12:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет необходимости взаимодействовать с надстройкой на основе VSTO. Вы можете автоматизировать любое приложение MS Office (включая Visio) из скрипта Python. Я верю, что pywin32 может помочь с такими задачами.

from win32com.client import constants

appVisio = win32com.client.Dispatch("Visio.Application")
appVisio.Visible =1

doc = appVisio.Documents.Add("Basic Diagram.vst")
pagObj = doc.Pages.Item(1)

doc.SaveAs(r'e:\temp\MyDrawing.vsd')
doc.Close()

win32com возвращает вам тонкую оболочку Python вокруг COM-сервера, предоставленного приложением. Документация по объектной модели Visio находится здесь.

Имейте в виду, что объекты, которые вы возвращаете, являются объектами COM в тонкой оболочке Python и поэтому не всегда ведут себя как объекты Python, а в документации предполагается, что вы пишете на VBA, а не на Python.

Другие вопросы по теме