一、当前版本
D:\Python\PycharmProjects\PythonProject1>python --version
Python 3.13.2
D:\Python\PycharmProjects\PythonProject1>
二、单板安装包版本
D:\Python\PycharmProjects\PythonProject1>pip list
Package Version
------------------------- --------
openpyxl 3.1.5 // 2013-office-excel
pywin32 311 //2013-office-visio
pywin32-ctypes 0.2.3
D:\Python\PycharmProjects\PythonProject1>
代码
# author:""
# D:\Python\Python313
# date:2025/8/26 21:49
# DevelopmentEnvironment: Windows 11 home Chinese(Simplified),64bit
# -*- coding: utf-8 -*-, T14P
# D:\Python\>python / >>> import os / >>> dir() dir(os) 查看模块定义全部名称
# Ctrl + / 批量注释的快捷键#
# visio2013 显示开发工具, 文件-->选项--》高级--》勾选以开发人员身份运行★
# A4: 210mm x 297mm 纵向 /A4: 297mm x 210mm 横向
# excel ->sheet->cell
# visio ->page ->shape,connect
visio-vssx.py
import win32com.client as win32
import sys #导入内置函数,命令行输入参数文件名
import os #读取目录文件
# 定义ANSI转义序列开始红色文本的代码
red = '\033[31m'
green = '\033[32m'
blue = '\033[34m'
# 定义ANSI转义序列结束颜色的代码
c_end = '\033[0m'
# Visio的模板/模具保存在
# C:\Program Files\Microsoft Office\root\Office16\Visio Content\2052目录下(2019专业版),
# C:\Program Files\Microsoft Office\Office15\Visio Content\2052(2013专业版,Win11)
# C:\Program Files(x86)\Microsoft Office\Office12\2052(2007专业版,Win7)
print(f"第一步,列出本机安装visio的模具目录, 比如2023visio专业版")
if len(sys.argv) < 2:
zy_path = r"C:\Program Files\Microsoft Office\Office15\Visio Content\2052" #2013visio的目录缺省值
print(f"Cur visio-vssx Dir: (defaulte) {zy_path}")
else:
zy_path = sys.argv[1]
print(f"Cur visio-vssx Dir: (inpute ) {zy_path}")
#第二步打印帮助信息
printf(f"第二步打印帮助信息")
appVisio = win32.Dispatch("Visio.Application")
print(f" 帮助信息:dir(appVisio.Documents)")
print(dir(appVisio.Documents)) # 查看Documents对象的所有方法/属性
print(f" 帮助信息:help(appVisio.Documents.Open)")
print(help(appVisio.Documents.Open)) # 查看Open方法的简要说明
appVisio = win32.Dispatch("Visio.Application")
appVisio.Visible = True #首次运行时,保持True, 以便调试。弹出visio窗口
#操作前建议设置Application.Visible = False以避免界面闪烁
#第三步 读取目录文件到列表files
printf(f"第三步 读取目录文件到列表files")
try:
files = os.listdir(zy_path)
except Exception as e:
print(f"An error occurred: \n{e}") #如果路径不存在,报错退出程序,代码-2
sys.exit(2)
if zy_path.find("\\\\") > 1: # 查找是否输入\\字符了,路径会失败,退出程序
print(f"路径输入错误\\,程序退出.{zy_path.find("\\\\")}")
sys.exit(3)
print(f"文件数量:{len(files)},{files}")
#第四步,过滤,保留VSSX文件到files_vssx。
printf(f"第四步,过滤,保留VSSX文件")
files_vssx=[]
for f in files:
if f.find(".VSSX")>-1 or f.find(".vssx")>-1 : files_vssx.append(f)
print(f"文件数量:{len(files_vssx)},{files_vssx}")
#第五步,循环读取模具文件的形状
printf(f"第五步,循环读取模具文件的形状")
for x , file in enumerate(files_vssx):
#stn = appVisio.Documents.Add(file) #打开模具文件名称,读取全部形状
stn = appVisio.Documents.Open(file) # 打开模具文件名称,读取全部形状,不close
#if x > 5: break #打开第5个文件后停止
sum_master=len(stn.Masters)
for y,elem in enumerate(stn.Masters,start=1):
print(f"{x:>3}{file:>14},{green}stn: {stn}{c_end},形状总数名称{sum_master}_{y:0>3}, {elem.NameU}")
#stn.Close() #弹出窗口提示是否保存,需要手动点击不保存
print(f"end")
#PyCharm 2024.3.6 (Community Edition)直接运行
#命令行运行python.exe visio-vssx.py
#命令行运行python.exe visio-vssx.py "C:\Program Files\Microsoft Office\Office15\Visio Content\2052"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。