PowerDesigner遍历导出所有表结构到Excel

PowerDesigner遍历导出所有表到Excel

1.打开需要导出表结构到Excel的pdm文件

2.点击Tools|Execute Commands|Edit/Run Script菜单或按下快捷键Ctrl + Shift + X打开脚本窗口,输入示例VBScript脚本,修改其中的Excel模板路径及工作薄页签,点Run按钮执行即可

在这里插入图片描述

3.VBScript脚本

'******************************************************************************
'* File:     pdm2excel.vbs
'* Purpose:  分目录递归,查找当前PDM下所有表,并导出Excel
'* Title:    
'* Category: 
'* Version:  1.0
'******************************************************************************
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
' get the current active model
Dim mdl ' the current model
Set mdl = ActiveModel
Dim EXCEL,sheet,rowsNum
rowsNum = 1
 
If (mdl Is Nothing) Then
    MsgBox "There is no Active Model"
Else
    SetExcel
    ListObjects(mdl)
End If
'-----------------------------------------------------------------------------
' Sub procedure to scan current package and print information on objects from current package
' and call again the same sub procedure on all children pacakge 
' of the current package
'-----------------------------------------------------------------------------
Private Sub ListObjects(fldr)
    output "Scanning " & fldr.code
    Dim obj ' running object
    For Each obj In fldr.children
        ' Calling sub procedure to print out information on the object
        DescribeObject obj,fldr.name
    Next
    ' go into the sub-packages
    Dim f ' running folder
    For Each f In fldr.Packages
        'calling sub procedure to scan children package
        ListObjects f
    Next
End Sub
'-----------------------------------------------------------------------------
' Sub procedure to print information on current object in output
'-----------------------------------------------------------------------------
Private Sub DescribeObject(CurrentObject,packageName)
    if not CurrentObject.Iskindof(cls_NamedObject) then exit sub
    if CurrentObject.Iskindof(cls_Table) then 
        ExportTable CurrentObject, sheet,packageName
    else
        output "Found "+CurrentObject.ClassName+" """+CurrentObject.Name+""", Created by "+CurrentObject.Creator+" On "+Cstr(CurrentObject.CreationDate)   
    End if
End Sub
 
 
Sub SetExcel()
    Set EXCEL= CreateObject("Excel.Application")
 
    ' Make Excel visible through the Application object.
    EXCEL.Visible = True
    EXCEL.workbooks.add(-4167)'添加工作表
    EXCEL.workbooks(1).sheets(1).name ="PDM导出到Excel"
    set sheet = EXCEL.workbooks(1).sheets("PDM导出到Excel")
 
    ' Place some text in the first Row of the sheet.
	sheet.Cells(rowsNum, 1).Value = "序号"
    sheet.Cells(rowsNum, 2).Value = "表名"
    sheet.Cells(rowsNum, 3).Value = "表中文名"
    sheet.Cells(rowsNum, 4).Value = "表注释"
    sheet.Cells(rowsNum, 5).Value = "字段名"
    sheet.Cells(rowsNum, 6).Value = "字段中文名"
    sheet.Cells(rowsNum, 7).Value = "字段注释"
	sheet.Cells(rowsNum, 8).Value = "是否主键"
	sheet.Cells(rowsNum, 9).Value = "是否非空"
	sheet.Cells(rowsNum, 10).Value = "字段类型"
	sheet.Cells(rowsNum, 11).Value = "表所在package名称"
End Sub
 
Sub ExportTable(tab, sheet,packageName)
    Dim col ' running column
    Dim colsNum
    colsNum = 0
    for each col in tab.columns
        colsNum = colsNum + 1
        rowsNum = rowsNum + 1
		sheet.Cells(rowsNum, 1).Value = colsNum
        sheet.Cells(rowsNum, 2).Value = tab.code
        sheet.Cells(rowsNum, 3).Value = tab.name
        sheet.Cells(rowsNum, 4).Value = tab.comment
        sheet.Cells(rowsNum, 5).Value = col.code
        sheet.Cells(rowsNum, 6).Value = col.name
        sheet.Cells(rowsNum, 7).Value = col.comment
		If col.Primary = true Then
			sheet.cells(rowsNum, 8) = "是" 
        Else
			sheet.cells(rowsNum, 8) = "否" 
        End If
		If col.Mandatory = true Then
			sheet.cells(rowsNum, 9) = "是" 
        Else
			sheet.cells(rowsNum, 9) = "否" 
        End If
		sheet.Cells(rowsNum, 10).Value = col.datatype
		sheet.Cells(rowsNum, 11).Value =packageName
    next
		'设置列宽
		sheet.Columns(1).ColumnWidth =5 
		sheet.Columns(2).ColumnWidth = 30 
		sheet.Columns(3).ColumnWidth = 30 
		sheet.Columns(4).ColumnWidth = 30 
		sheet.Columns(5).ColumnWidth = 30 
		sheet.Columns(6).ColumnWidth = 30 
		sheet.Columns(7).ColumnWidth = 30 
		sheet.Columns(8).ColumnWidth = 10 
		sheet.Columns(9).ColumnWidth = 10 
		sheet.Columns(10).ColumnWidth = 20 
		sheet.Columns(11).ColumnWidth = 30 
	'若果需要表头居中显示就把下面的注释内容放开
    'sheet.Range(sheet.cells(1,1),sheet.cells(1,11)).HorizontalAlignment = 3
    sheet.Range(sheet.cells(1,1),sheet.cells(1,11)).Font.Bold = True
    output "Exported table: "+ +tab.Code+"("+tab.Name+")"
End Sub 

[2024-06-08]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/694316.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[数据集][图像分类]人种黄种人白人黑人分类数据集970张4类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):970 分类类别数:4 类别名称:[“Asian”,“Caucasian”,“Indian…

深度学习简单概述

概述 理论上来说,参数越多的模型复杂度越高、容量越大,这意味着它能完成更复杂的学习任务。但复杂模型的训练效率低,易陷入过拟合。随着云计算、大数据时代的到来,计算能力的大幅提高可以缓解训练的低效性,训练数据的…

Java核心: 类加载器

这一节我们来学习Java的类加载器,以及常用的类加载器实现URLClassLoader。 1. Java类加载器 类加载器用于将字节码读取并创建Class对象。我们知道JVM本身是用C写的,一开始执行的时候由C程序来加载并引导字节码的运行,这些由C编写的加载字节…

docker——基础知识

简介 一、什么是虚拟化和容器化 ​ 实体计算机叫做物理机,又时也称为寄主机; ​ 虚拟化:将一台计算机虚拟化为多态逻辑计算机; ​ 容器化:一种虚拟化技术,操作系统的虚拟化;将用户空间软件实…

2024050501-重学 Java 设计模式《实战命令模式》

重学 Java 设计模式:实战命令模式「模拟高档餐厅八大菜系,小二点单厨师烹饪场景」 一、前言 持之以恒的重要性 初学编程往往都很懵,几乎在学习的过程中会遇到各种各样的问题,哪怕别人那运行好好的代码,但你照着写完…

C++ ─── STL 以及string

前言:什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架 STL的六大组件 1. 为什么学习string类? 1.1 C语言中的字符…

12.打渔还是晒网

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/17 题目描述 有句俗话叫“三天打渔,两天…

定个小目标之刷LeetCode热题(14)

了解股票的都知道,只需要选择股票最低价格那天购入,在股票价格与最低价差值最大时卖出即可获取最大收益,总之本题只需要维护两个变量即可,minPrice和maxProfit,收益 prices[i] - minPrice,直接用代码描述如下 class …

电阻十大品牌供应商

选型时选择热门的电阻品牌,主要是产品丰富,需求基本都能满足。 所所有的电路中,基本没有不用电阻的,电阻的选型需要参考阻值、精度、封装、温度范围,贴片/插件等参数,优秀的供应商如下: 十大电…

dos命令---根据端口查找进程

简介 在日常开发中,常常出现端口被占用的情况,导致程序运行报错,这时可以使用此命令查看哪个进程占用了端口 命令 netstat -ano | findstr 11434返回结果:

Diffusers代码学习: 多个Adapter

T2I Adapter也是可组合的,允许您使用多个适配器对图像施加多个控制条件。例如,可以使用姿势贴图提供结构控制,使用深度贴图进行深度控制。这是由[MultiAdapter]类启用的。 让我们用姿势和深度适配器来调节文本到图像的模型。创建深度和姿势图…

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现LSTM-ABKDE长…

面试官:前端实现图片懒加载怎么做?这不是撞我怀里了嘛!

前端懒加载(也称为延迟加载或按需加载)是一种网页性能优化的技术,主要用于在网页中延迟加载某些资源,如图片、视频或其他媒体文件,直到它们实际需要被用户查看或交互时才进行加载。这种技术特别适用于长页面或包含大量…

【UML用户指南】-12-对高级结构建模-接口、类型和角色

目录 1、名称 2、操作 3、关系 4、理解接口 5、常用建模技术 5.1、对系统中的接缝建模 5.2、对静态类型和动态类型建模 5.2.1、对静态类型建模 5.2.2、对动态类型建模 使接口易于理解和易于访问 接口在关于一个抽象做什么的描述与关于这个抽象如何做的实现之间定义了…

硬盘坏了数据能恢复吗 硬盘数据恢复一般多少钱

在数字化时代,我们的生活和工作离不开电脑和硬盘。然而,硬盘故障是一个常见的问题,可能会导致我们的数据丢失。当我们的硬盘坏了,还能恢复丢失的数据吗?今天我们就一起来探讨关于硬盘坏了数据能恢复吗,硬盘…

ENSP校园网设计实验

前言 哈喽,我是ICT大龙。本次更新了使用ENSP仿真软件设计校园网实验。时间比较着急,可能会有错误,欢迎大家指出。 获取本次工程文件方式在文章结束部分。 拓扑设计 拓扑介绍---A校区 如图,XYZ大学校园网设计分为3部分&#xff0…

ssm629基于SSM的二手交易平台设计与开发+jsp【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

【nerf】nvidia-smi

当cmd下nvidia -smi不能使用时候 沿着以下路径打开cmd,再输入,可以查看cuda版本 然后查看电脑安装的

【Redis】什么是Redis缓存 雪崩、穿透、击穿?(一篇文章就够了)

目录 什么是Redis? Redis的正常存储流程? 什么是Redis缓存雪崩? 缓存雪崩 缓存预热 缓存失效时间的随机性 什么是Redis缓存穿透? 缓存穿透 缓存空对象 BloomFilter(布隆过滤器) 什么是Redis缓存击穿&#…

Segment Anything CSharp| 在 C# 中通过 OpenVINO™ 部署 SAM 模型实现万物分割

​ OpenVINO™ C# API 是一个 OpenVINO™ 的 .Net wrapper,应用最新的 OpenVINO™ 库开发,通过 OpenVINO™ C API 实现 .Net 对 OpenVINO™ Runtime 调用.Segment Anything Model(SAM)是一个基于Transformer的深度学习模型&#x…