【问题标题】:How to get VDX format from VSDX using Visio 2013 or higher?如何使用 Visio 2013 或更高版本从 VSDX 获取 VDX 格式?
【发布时间】:2020-04-19 21:41:40
【问题描述】:

从 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

【问题讨论】:

    标签: visio visio2013


    【解决方案1】:

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

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

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

    【讨论】:

    • 很少有文章建议我在 POC 下使用将 .VSDX 转换为 .VDX 或将 .VSD 转换为 .VDX ,这两种方法都有效。所以 .VSD 到 .VDX 根本不可能,除非我使用 Visio 2010 编辑器?也添加了我的 POC 代码。
    • 据我所知,此 POC 代码有效,但仅适用于 Visio 2010(及更低版本)。此功能 (.VDX) 被专门禁用,以使人们迁移到开放 xml 标准 (.VSDX)。请注意,.VSDX 也是 XML,只是压缩(但它与 .VDX 不兼容)。所以不支持两种格式,一种被删除了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多