如何使用Visio 2013或更高版本从VSDX获取VDX格式



从Microsoft Visio 2013开始,对VSD文档的支持已结束。我们的应用程序要求使用Visio 2013将VSDX转换为VDX,但我找不到方法。

我尝试使用Visio互操作DLL打开不可见的Visio应用程序,并尝试使用另存为将我的VSDX保存为VDX。代码编译并运行时没有任何错误,我得到了一个。VDX文件作为输出。当我尝试使用Visio查看器查看生成的VDX文件时,它失败了。上面写着

Microsoft查看器无法完成此操作

它不是作为一个健康的文件生成的吗?

我们需要从Visio 2010转移到Visio 2019。我们需要找到一种同时支持VSDX和VDX格式的方法,直到我们所有的应用程序都被迁移。我已经使用下面的POC将.vsdx转换为.vdx或将.vsd转换为.vdex,当我尝试使用Visio查看器查看时,这两种方法都有效。-

很少有文章建议我使用以下POC进行转换。VSDX到。VDX或转换。VSD到。VDX,两者都起作用。所以VSD到。VDX根本不可能,除非我使用Visio 2010编辑器?

// Create Visio Application Object
Visio.Application vsdApp = new Visio.Application();
// Make Visio Application Invisible
vsdApp.Visible = false;
// Create a document object and load a diagram
Visio.Document vsdDoc = vsdApp.Documents.Open(dataDir + "Drawing1.vsd");
// Save the VDX diagram
vsdDoc.SaveAs(dataDir + "SaveDiagramToVDXwithVSTO_out.vdx");   

引用的链接-https://csharp.hotexamples.com/examples/Microsoft.Office.Interop.Visio/Application/-/php-application-class-examples.html

Visio 2013中真正删除了"另存为VDX"功能。甚至来自API。如果调用扩展名为.vdx.SaveAs传递名称,实际得到的是扩展名为.vdx.vsd二进制文件。您可以通过在记事本中查看生成的文件来确保这一点——它不是xml。

当您尝试在查看器中加载该文件时,它会尝试将其解析为xml,但失败了,因为该文件实际上是一个二进制文件,因此会出现此错误。

如果您需要支持.vdx,请使用Visio 2010。

最新更新