我有兴趣使用 Python 读取 Microsoft Visio 文件。 我做了一个自定义的离线个人Python模块来阅读它;我从这个存储库中获得了很大的灵感:https://github.com/dave-howard/vsdx但我自己重新编码了它,添加了测试。
我没有 Microsoft Visio 许可证,因此我看不到里面的内容,但与许多 Office 文件一样,它们是 XML 文件体系结构的压缩存档。
据我所知,有“页面”文件,“主”文件和“关系”文件。
我的问题是我从中提取数据的 visio 文件之一具有“太多数据”。我的意思是,当同事用 Visio 打开它时,它会显示空白字段。
我对此进行了一些研究,并运行了代码的“无主”版本。
预期结果(使用 Visio 的人看到的结果):
商品名称 | 物品属性1 | 物品属性2 | 物品属性3 |
---|---|---|---|
项目1 | A | C |
“获取主形状并添加属性”的结果:
商品名称 | 物品属性1 | 物品属性2 | 物品属性3 |
---|---|---|---|
项目1 | A | B | C |
没有“获取主形状并添加属性”的结果(仅 shapeN.xml 中形状的数据):
商品名称 | 物品属性1 | 物品属性2 | 物品属性3 |
---|---|---|---|
项目1 | A |
如您所见,默认情况下的实现给出了“太多信息”,而“唯一形状”则忘记了很多信息(包括想要的信息)。
从这个实验中,我看到我要查找的信息存储在主文件中。
可以在这个答案中看到 XML 是如何编程的:Visio Master Shape 属性存储在哪里?
因此我想象两种可能性:
Visio 用户有一些东西使他无法看到该值。是否有可能发生这种情况的设置/菜单?他向我展示了他的屏幕,该值显然是空的,并且与我解析的值不同。
“Visio 应该获取/显示此值”存储在某处,因为它与在不同 PC 上保存/加载一致。在这种情况下,它会位于哪里?
每个属性都有一个“可见”标志,可以从 UI 中设置,也可以作为论坛计算结果的结果(取决于形状)。
属性值也可以通过某些公式(无论是这种形状还是其他形状)在技术上设置(或清除)。基本上所有 Visio 形状都是由公式控制的“智能”形状。
无论如何,我建议您使用 Visio 来处理这个问题。而且,如果没有看到您的文件,就很难判断。