Сохранить диаграмму Visio 2013 в формате VSD

Как сохранить диаграмму в формате VSD с помощью Visio 2013 в C# Visio Control?

Я использую следующий код:

string filename = String.Format("{0}.vsd", Guid.NewGuid());
visioControl1.Document.SaveAs(temppath + filename); //Error!

Это отлично работает в Visio 2003-2010, но в Visio 2013 выдает исключение "Файл не найден". Если я изменю расширение на "vsdx" в первой строке - это снова нормально. Но я должен поддерживать все версии Visio.

1 ответ

Решение

В API Visio есть известная ошибка: Visio Control в Visio 2013 не может быть сохранен как VSD. Это покажет все виды странного поведения. Чтобы справиться с этим, в Visio 2013 вам нужно сохранить как vsdx и использовать невидимый экземпляр приложения Visio для сохранения как vsd:

  • сохранить как VSDX
  • сделать копию VSDX
  • запустить новый невидимый объект приложения Visio
  • откройте копию vsdx с помощью невидимого приложения
  • сохранить как VSD с помощью невидимого приложения
  • (удалите файлы vsdx, сохраненные на шаге 1 / 2)

Чтобы определить версию установленного Visio: VisioVersion = Convert.ToInt32(document.Application.Version.Replace(".", ",").Replace(",0", "")) Если VisioVersion >= 15 -> Visio 2013

Также обратите внимание: чтобы сохранить как vsd / vsdx, вам нужно использовать: document.SaveEx insted of document.Save

Чтобы создать экземпляр невидимого приложения Visio, обратитесь по адресу: Microsoft.Office.Interop.Visio.InvisibleApp.

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