Visio .vsdx 格式解压缩和 zip 损坏
Visio .vsdx format unzip and zip corrupts
我试图在不使用 Windows Visio 应用程序的情况下修改 Visio 文件(打开 XML 格式)。我的第一个实验只是使用 7zip 解压缩使用 Visio 创建的已知良好的 .vsdx 文件。这一切都很好;我可以查看包裹的内容。在不做任何修改的情况下,我使用 7zip 重新压缩内容并重命名为 .vsdx,但是当我尝试使用 Visio 打开生成的新文件时,它抱怨文件已损坏。有没有办法手动将内容重新压缩到 Visio 接受的有效 Visio 文件中?我怀疑可能会对文件的有效性进行某种检查,但找不到可能是什么。感谢您的任何输入。
我会使用某种形式的 OpenXML 库来使用某种“认可的魔法”获取文件的内容。
了解到您可能不想通过编程来做任何您正在做的事情,所以我寻找了某种免费的编辑器。
我为 Visual Studio 找到了这个免费 plug-in:
https://marketplace.visualstudio.com/items?itemName=bsivanov.OpenXMLPackageEditorforVisualStudio
它也适用于免费的“Microsoft Visual Studio Community 2019”。我刚刚打开开发环境(又名:应用程序)并将 Visio .vsdx 文件拖到应用程序中。它使用 tree-like 编辑器打开。我能够深入挖掘,直到找到 visio > pages > page1.xml“leaf”。在那里,我能够更改形状上的一些文本,然后保存“包”。
无论此工具做什么,它都能正确保存文件,而且我能够在 Visio 中打开更改后的 .vsdx 文件。我在编辑器中更改的文本确实在 Visio 内部更改了!
我想我以前用过这个:
“欢迎使用 Open XML Office SDK 2.5”
https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk
https://github.com/OfficeDev/Open-XML-SDK
要在没有 Visio 应用程序的情况下编辑 Visio 文件,您仍然需要在一定程度上了解 Visio 的工作原理。
一个简单的例子:
我在其中一个 page.xml 文件中相当轻松地更改了形状上的文本。那很简单。然后我想添加那个形状的副本。复制并粘贴现有形状的整个 xml 块非常简单,然后更改 PinX 和 PinY 属性以将形状移动到页面上的不同位置。
但除非您在页面中为其指定唯一 ID,否则您将看不到该形状。我测试了删除 ID 属性(以查看 Visio 是否会在打开时找出它并自动分配一个),但它没有用。如果 ID 与另一个形状相同,则打开文件时将忽略该形状。将 ID 更改为未使用的内容后,我确实看到了形状的新副本。
如果您创建分组形状或具有高级行为的形状(SmartShapes、ShapeSheet 公式等),那么这可能会变得复杂。由于公式需要通过 ID 引用其他形状,因此您需要管理 ID!对于简单的框和线等,通过 OpenXML 生成这些东西可能效果很好(而且速度很快)。祝你好运!
我试图在不使用 Windows Visio 应用程序的情况下修改 Visio 文件(打开 XML 格式)。我的第一个实验只是使用 7zip 解压缩使用 Visio 创建的已知良好的 .vsdx 文件。这一切都很好;我可以查看包裹的内容。在不做任何修改的情况下,我使用 7zip 重新压缩内容并重命名为 .vsdx,但是当我尝试使用 Visio 打开生成的新文件时,它抱怨文件已损坏。有没有办法手动将内容重新压缩到 Visio 接受的有效 Visio 文件中?我怀疑可能会对文件的有效性进行某种检查,但找不到可能是什么。感谢您的任何输入。
我会使用某种形式的 OpenXML 库来使用某种“认可的魔法”获取文件的内容。
了解到您可能不想通过编程来做任何您正在做的事情,所以我寻找了某种免费的编辑器。
我为 Visual Studio 找到了这个免费 plug-in:
https://marketplace.visualstudio.com/items?itemName=bsivanov.OpenXMLPackageEditorforVisualStudio
它也适用于免费的“Microsoft Visual Studio Community 2019”。我刚刚打开开发环境(又名:应用程序)并将 Visio .vsdx 文件拖到应用程序中。它使用 tree-like 编辑器打开。我能够深入挖掘,直到找到 visio > pages > page1.xml“leaf”。在那里,我能够更改形状上的一些文本,然后保存“包”。
无论此工具做什么,它都能正确保存文件,而且我能够在 Visio 中打开更改后的 .vsdx 文件。我在编辑器中更改的文本确实在 Visio 内部更改了!
我想我以前用过这个:
“欢迎使用 Open XML Office SDK 2.5” https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk https://github.com/OfficeDev/Open-XML-SDK
要在没有 Visio 应用程序的情况下编辑 Visio 文件,您仍然需要在一定程度上了解 Visio 的工作原理。
一个简单的例子:
我在其中一个 page.xml 文件中相当轻松地更改了形状上的文本。那很简单。然后我想添加那个形状的副本。复制并粘贴现有形状的整个 xml 块非常简单,然后更改 PinX 和 PinY 属性以将形状移动到页面上的不同位置。
但除非您在页面中为其指定唯一 ID,否则您将看不到该形状。我测试了删除 ID 属性(以查看 Visio 是否会在打开时找出它并自动分配一个),但它没有用。如果 ID 与另一个形状相同,则打开文件时将忽略该形状。将 ID 更改为未使用的内容后,我确实看到了形状的新副本。
如果您创建分组形状或具有高级行为的形状(SmartShapes、ShapeSheet 公式等),那么这可能会变得复杂。由于公式需要通过 ID 引用其他形状,因此您需要管理 ID!对于简单的框和线等,通过 OpenXML 生成这些东西可能效果很好(而且速度很快)。祝你好运!