首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visio2010 C#实体自动化

Visio2010 C#实体自动化
EN

Stack Overflow用户
提问于 2012-07-14 01:06:25
回答 1查看 1.5K关注 0票数 1

如果之前有人问过这个问题,我很抱歉,但在搜索了一段时间后,我找不到任何关于这个问题的具体答案。

我在Visio 2010中有一个ERD图表。它大约有15张桌子。为了让我们的DBA创建数据库,我必须使用数据类型、主键、描述将每个列输出到excel工作表。

我的第一个尝试是简单地从形状属性复制并粘贴列定义表,但这不起作用(感谢Microsoft!)。在尝试了其他一些方法之后,我发现我必须手动复制每个表格的每个单元格-这很耗时。

我向C#和Visio Interop寻求帮助。我现在可以导出列定义(它们在形状的Text属性中),但我找不到保存表名称的属性。

有没有人知道哪个对象拥有这个属性,或者它是否可以访问?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2012-07-27 02:21:11

最后我解决了这个问题。我无法解析出标准的Visio绘图(.vsd),因此我选择了Visio XML绘图(.vdx)。最后,这对我来说是有效的:

其中path是指向vxd图形的文件路径。我发现XML绘图中页面中的每个形状定义都有两个自己的形状。第一个形状保存实体名称,第二个形状保存实体列。

代码语言:javascript
运行
复制
XDocument xdoc = XDocument.Load(path);
var elements = xdoc.Elements().Elements();
XName pageXName = XName.Get("Page","http://schemas.microsoft.com/visio/2003/core");
var pages = elements.Elements(pageXName);

foreach (XElement page in pages)
{                
    XName shapeXName = XName.Get("Shape","http://schemas.microsoft.com/visio/2003/core");
    var shapes = from shape in page.Elements().Elements(shapeXName)
                 where shape.Attribute("Type").Value == "Group"
                 select shape;

    foreach (XElement shape in shapes)
    {
        var shapeShapes = shape.Elements();
        List<XElement> textShapes = shapeShapes.Elements(shapeXName).ToList();

        XName textXName = XName.Get("Text","http://schemas.microsoft.com/visio/2003/core");
        XName cpXName = XName.Get("Text", "http://schemas.microsoft.com/visio/2003/core");

        string tableName = textShapes[0].Elements(textXName).SingleOrDefault().Value;
        string columns = textShapes[1].Elements(textXName).SingleOrDefault().Value;

        Debug.WriteLine("-------------" + tableName.TrimEnd('\n') + "---------------");
        Debug.Write(columns);
        Debug.WriteLine("----------------------------");

    }
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11475099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档