Чтение содержимого файла visio сверху вниз в последовательности с использованием python

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

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

Это программа, с которой я работаю

pages = application.ActiveDocument.Pages
i=1
for page in pages:
    print('SheetName:' + str(page))
    i=i+1
    sheet1.write(i,0,('SheetName:' + str(page)))
    for shape in page.Shapes:
        print (shape.Name + " '" + shape.Text)
        sheet1.write(i,1,shape.Name)
        sheet1.write(i,2,shape.Text)
        i=i+1
wb.save('example1.xls')'

Не могли бы вы помочь мне с этим. Спасибо.

0
0
289
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

К сожалению, в Visio нет такого метода, как page.GetShapesAccordingToTheGraph, вам нужно будет сделать это самостоятельно. На первом этапе вы можете найти все взаимосвязи фигур (построить "график"), а на втором этапе пройти по этому графику в последовательность, которая имеет для вас смысл.

  1. Построение графика. Вы можете использовать Visio shape.ConnectedShapes или Connects, чтобы найти связанные фигуры. Вы можете сослаться на эту замечательную статью, чтобы начать поиск связей: https://blog.bvisual.net/2016/08/09/understanding-visio-connections/

  2. Путешествие. Самый простой метод - использовать, например, поиск «сначала хлеб» или «Поиск в глубину». Все зависит от того, как связаны ваши фигуры (например, есть ли петли / циклы и как вы хотите обрабатывать альтернативные пути).

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

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