欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > python编辑visio文件简易入门

python编辑visio文件简易入门

2024/11/14 12:23:29 来源:https://blog.csdn.net/flashman911/article/details/143652290  浏览:    关键词:python编辑visio文件简易入门

目录

1、visio中的对象

2、插入shape

3、创建visio文件,添加2个shape

1)打开visio软件和模板文件,并添加一个矩形

2)添加一个圆形

3)修改圆形的尺寸

4)在形状中写入文字

5)保存文件


有些时候需要将数据自动展现为连接关系,或者通过图形描述得连接关系转换为数据。这个时候,visio是一个比较好得载体。

操作visio得资料比较少,而且对象得使用方式与excel、word有所不通。

1、visio中的对象

visio里面比较重要得对象是connect和shape。页面中放置的所有东西都是shape,包括画的连线。这个是要理解的重点。

通过遍历所有的connect可以获取所有相连的shape;遍历所有的shape可以获取到没有连的和连的shape

每个connect都有源头与目的,因此其属性中尾缀From得是源头,To得是末端。

2、插入shape

当你需要插入shape时,还需要添加形状模板,然后才能在page中放入shape。模板中shaoe得名字会随着英文版或者中文版有不同,但是用数字编号指向模板中得shape是相通得。

3、创建visio文件,添加2个shape

visio有个比较不一样的地方,需要使用库文件,然后从里面选择形状drop到页面中。

这和手动在界面中拖拽摆放shape是一致的。

当然,还可以通过编程,在page中直接绘制需要的形状,这个就要略繁琐一点。

项Excel和word,只需要打开application就可以。但是visio通常还需要加载模板,才好用。

1)打开visio软件和模板文件,并添加一个矩形

import win32com.client as win32
from win32com.client import constantsappVisio = win32.gencache.EnsureDispatch("Visio.Application")
vdoc = appVisio.Documents.Add("Basic Diagram.vst")# 新建一个visio文件
stn = appVisio.Documents.Open("BASIC_M.VSS")#打开模板,只有打开了模板,才能调用库中的形状。page = vdoc.Pages.Item(1) # 选择第一页# 此段代码可以查询库中形状的名字
# cnt =0
# for elem in stn.Masters:
# 	cnt+=1
# 	if(cnt>10):
# 		break
# 	print(elem.NameU)# 从模板中选择一种形状
master = stn.Masters.ItemU("Rectangle")
#在页面中添加形状
shp = page.Drop(master, 0, 0) # 最后两个参数是插入图片的位置

运行结果:

会在画布的左下角(左下角的坐标就是 0,0),绘制一个矩形

如果不知道图形对应的名字,可以参考代码中注释的代码,遍历打印。

2)添加一个圆形

master2 = stn.Masters.ItemU("Circle") shp2 = page.Drop(master2,1,1)#添加一个圆形

运行效果:

新添加的圆形会自动置于前一个图形之上。

3)修改圆形的尺寸

# 调整shape的形状 
shp2.Resize(constants.visResizeDirW,100, constants.visMillimeters)

运行效果:

在页面的左下方添加了1个矩形和椭圆形。之所以是椭圆形,是因为Resize函数改变了圆形的尺寸。

可以注意到示例中用了NameU这个属性。在shape的属性中,还有Name这个属性,看起来只差一个字母。但是在实际使用中,Name会优点不方便,例如visio是中文,那么对应的Name是“矩形”,而不是“Rectangle”。NameU就不会有这些问题。

4)在形状中写入文字

shp.Text = 'A' # 对shape写入文本
shp2.Text = 'B'

5)保存文件

# 保存文件 # 
vdoc.SaveAs(new_file_path+'/test.vsdx')

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com