1

如何在 c# visio 控件中使用 visio 2013 以 vsd 格式保存图表?

我正在使用以下代码:

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

这在 Visio 2003-2010 下工作正常,但在 Visio 2013 中会引发“找不到文件”异常。如果我在第一行将扩展名更改为“vsdx” - 又可以了。但我必须支持所有的 Visio 版本。

4

1 回答 1

1

Visio API 中存在一个已知错误:Visio 2013 的 Visio 控件无法保存为 VSD。它会表现出各种奇怪的行为。为了解决这个问题,在 Visio 2013 下,您必须保存为 vsdx 并使用不可见的 Visio 应用程序实例保存为 vsd:

  • 另存为 vsdx
  • 制作 vsdx 的副本
  • 启动一个新的不可见 Visio 应用程序对象
  • 使用隐形应用打开 vsdx 的副本
  • 使用隐形应用程序另存为 vsd
  • (删除步骤 1 / 2 中保存的 vsdx 文件)

确定安装的 Visio 版本: VisioVersion = Convert.ToInt32(document.Application.Version.Replace(".", ",").Replace(",0", "")) If VisioVersion >= 15 -> Visio 2013

另请注意:要保存为 vsd / vsdx,您必须使用:document.SaveEx insted of document.Save

要创建不可见 Visio 应用的实例,请参阅:Microsoft.Office.Interop.Visio.InvisibleApp

于 2014-04-24T07:22:41.397 回答