2013-03-27 43 views
1

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

我使用下面的代码:

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

这2003 - 2010年的Visio下工作正常,但在Visio 2013年抛出“找不到文件”异常。 如果我在第一行中将扩展名更改为“vsdx” - 它再次正常。但是我必须支持所有的Visio版本。

+0

我不认为将扩展名更改为.vsd将会改变文件格式。您需要让Visio Control以正确的格式保存文档,而不仅仅是使用不同的文件扩展名。 – 2013-03-27 12:51:02

+0

是的,那是我的问题 - 怎么做?我的代码是为旧版本编写的,所以它的工作原理。作为一个例子,我展示了vsdx现在是正确的格式。 – JleruOHeP 2013-03-27 12:55:45

回答

1

Visio API中存在已知的错误: Visio 2013的Visio控件无法另存为VSD。它会显示各种奇怪的行为。 为了解决这个问题时,Visio 2013下,你必须保存为vsdx和使用Visio的一种无形的应用实例保存为VSD:

  • 另存为vsdx
  • 使vsdx副本
  • 使用隐形应用
  • 火了一个新的不可见的Visio应用对象
  • 打开使用不可见应用
  • 所述的vsdx的副本保存为VSD(保存在步骤删除vsdx文件(S)1/2)

为了确定安装的Visio版本: VisioVersion = Convert.ToInt32(document.Application.Version.Replace( “ ”)更换(“ 0" , ”“)”。”。) 如果VisioVersion> = 15 - >的Visio 2013

另外请注意:保存为VSD/vsdx,你将不得不使用: document.SaveEx insted的document.Save

要创建的实例无形的Visio应用程序,请参阅: Microsoft.Office.Interop.Visio.InvisibleApp