0

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

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

Microsoft 查看器无法完成此操作

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

我们需要从 Visio 2010 迁移到 Visio 2019。我们需要找到一种方法来支持 VSDX 和 VDX 格式,直到我们所有的应用程序都被迁移。我使用下面的 POC 将 .vsdx 转换为 .vdx 或将 .vsd 转换为 .vdx 当我尝试使用 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

4

1 回答 1

1

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

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

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

于 2020-04-19T10:16:23.937 回答