参考资料:http://www.cnblogs.com/hggc/archive/2013/10/15/3369857.html

由于有把ER图转Excel的需求,幸运地找到一个可用脚本,稍做修改完成需求

1. 环境

Windows 7+PowerDesigner 15.0.0.2613

2. 执行

1)打开需求转化的pdm文件

2)按下ctrl+shift+x

3)在输入范围内添加脚本内容并执行

  1. '******************************************************************************
  2.  
  3. '* File: pdm2excel.txt
  4.  
  5. '* Title: pdm export to excel
  6.  
  7. '* Purpose: To export the tables and columns to Excel
  8.  
  9. '* Model: Physical Data Model
  10.  
  11. '* Objects: Table, Column, View
  12.  
  13. '* Version: 1.0
  14.  
  15. '******************************************************************************
  16.  
  17. Option Explicit
  18.  
  19. Dim rowsNum
  20.  
  21. rowsNum =
  22.  
  23. '-----------------------------------------------------------------------------
  24.  
  25. ' Main function
  26.  
  27. '-----------------------------------------------------------------------------
  28.  
  29. ' Get the current active model
  30.  
  31. Dim Model
  32.  
  33. Set Model = ActiveModel
  34.  
  35. If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
  36.  
  37. MsgBox "The current model is not an PDM model."
  38.  
  39. Else
  40.  
  41. ' Get the tables collection
  42.  
  43. '创建EXCEL APP
  44.  
  45. dim beginrow
  46.  
  47. DIM EXCEL, SHEET
  48.  
  49. set EXCEL = CREATEOBJECT("Excel.Application")
  50.  
  51. EXCEL.workbooks.add(-)'添加工作表
  52.  
  53. EXCEL.workbooks().sheets().name ="test"
  54.  
  55. set sheet = EXCEL.workbooks().sheets("test")
  56.  
  57. ShowProperties Model, SHEET
  58.  
  59. EXCEL.visible = true
  60.  
  61. '设置列宽和自动换行
  62.  
  63. sheet.Columns().ColumnWidth =
  64.  
  65. sheet.Columns().ColumnWidth =
  66.  
  67. sheet.Columns().ColumnWidth =
  68.  
  69. sheet.Columns().WrapText =true
  70.  
  71. sheet.Columns().WrapText =true
  72.  
  73. sheet.Columns().WrapText =true
  74.  
  75. End If
  76.  
  77. '-----------------------------------------------------------------------------
  78.  
  79. ' Show properties of tables
  80.  
  81. '-----------------------------------------------------------------------------
  82.  
  83. Sub ShowProperties(mdl, sheet)
  84.  
  85. ' Show tables of the current model/package
  86.  
  87. rowsNum=
  88.  
  89. beginrow = rowsNum+
  90.  
  91. ' For each table
  92.  
  93. output "begin"
  94.  
  95. Dim tab
  96.  
  97. For Each tab In mdl.tables
  98.  
  99. ShowTable tab,sheet
  100.  
  101. Next
  102.  
  103. if mdl.tables.count > then
  104.  
  105. sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
  106.  
  107. end if
  108.  
  109. output "end"
  110.  
  111. End Sub
  112.  
  113. '-----------------------------------------------------------------------------
  114.  
  115. ' Show table properties
  116.  
  117. '-----------------------------------------------------------------------------
  118.  
  119. Sub ShowTable(tab, sheet)
  120.  
  121. If IsObject(tab) Then
  122.  
  123. Dim rangFlag
  124.  
  125. rowsNum = rowsNum +
  126.  
  127. ' Show properties
  128.  
  129. Output "================================"
  130.  
  131. sheet.cells(rowsNum, ) = "表名"
  132.  
  133. sheet.cells(rowsNum, ) =tab.name
  134.  
  135. sheet.cells(rowsNum, ) =tab.comment
  136.  
  137. sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Interior.Color = vbYellow
  138.  
  139. sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).font.color=vbRed
  140.  
  141. rowsNum = rowsNum +
  142.  
  143. sheet.cells(rowsNum, ) = "属性名"
  144.  
  145. sheet.cells(rowsNum, ) = "字段类型"
  146.  
  147. sheet.cells(rowsNum, ) = "说明"
  148.  
  149. '设置边框
  150.  
  151. sheet.Range(sheet.cells(rowsNum-, ),sheet.cells(rowsNum, )).Borders.LineStyle = ""
  152.  
  153. Dim col ' running column
  154.  
  155. Dim colsNum
  156.  
  157. colsNum =
  158.  
  159. for each col in tab.columns
  160.  
  161. rowsNum = rowsNum +
  162.  
  163. colsNum = colsNum +
  164.  
  165. sheet.cells(rowsNum, ) = col.name
  166.  
  167. sheet.cells(rowsNum, ) = col.datatype
  168.  
  169. sheet.cells(rowsNum, ) = col.comment
  170.  
  171. next
  172.  
  173. sheet.Range(sheet.cells(rowsNum-colsNum+,),sheet.cells(rowsNum,)).Borders.LineStyle = ""
  174.  
  175. rowsNum = rowsNum +
  176.  
  177. Output "FullDescription: " + tab.Name
  178.  
  179. End If
  180.  
  181. End Sub

3. 结果

表名 userinfo 个人信息
属性名 字段类型 说明
user_id bigint(20)  
address varchar(100)  
degree varchar(2) 最高学历
working_age int(11) 教龄
title varchar(50) 职称

PowerDesigner从Physical Data Model转Excel的更多相关文章

  1. powerdesigner 数据库表定义导出到excel

    shift+ctrl+X,打开脚本运行,脚本如下:'************************************************************************** ...

  2. Data Model for Message Receiver

    1. Physical Data Model 2. SQL Statements drop database MessageReceiver go /*======================== ...

  3. 数据库系统概述(Data Model、DBMS、DBS、RDBS、Structured Query Language)

    数据Data 描述事物的符号记录成为数据. 数据是数据库中存储的基本对象.   除了基本的数字之外.像图书的名称.价格.作者都可以称为数据. 将多种数据记录列成一张表.通过数据表管理数据. 每一行的数 ...

  4. HBase 数据模型(Data Model)

    HBase Data Model--HBase 数据模型(翻译) 在HBase中,数据是存储在有行有列的表格中.这是与关系型数据库重复的术语,并不是有用的类比.相反,HBase可以被认为是一个多维度的 ...

  5. 关于powerdesigner中的data types说明

    原文:关于powerdesigner中的data types说明 这一堆的数据类型看着真是头大,弄个表格对照一下. Numeric data types Standard datatype DBMS- ...

  6. Data Management Technology(2) -- Data Model

    1.Data Model Model Is the abstraction of real world Reveal the essence of objects, help people to lo ...

  7. Sentry 监控 - Snuba 数据中台架构(Data Model 简介)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  8. ExtJS笔记 Ext.data.Model

    A Model represents some object that your application manages. For example, one might define a Model ...

  9. Entity Framework的核心 – EDM(Entity Data Model) 一

    http://blog.csdn.net/wangyongxia921/article/details/42061695 一.EnityFramework EnityFramework的全程是ADO. ...

随机推荐

  1. EasyUI、Struts2、Hibernate、spring 框架整合

    经历了四个月的学习,中间过程曲折离奇,好在坚持下来了,也到了最后框架的整合中间过程也只有自己能体会了. 接下来开始说一下整合中的问题和技巧: 1,  jar包导入 c3p0(2个).jdbc(1个). ...

  2. 微信https请求工具类

    工作中用到的微信https请求工具类. package com.gxgrh.wechat.tools; import com.gxgrh.wechat.wechatapi.service.System ...

  3. Install Nvidia driver 367.18 or later

    Install Nvidia driver 367.18 or later from ppa:graphics-drivers/ppa as follows: sudo add-apt-reposit ...

  4. Windows下的Memcache安装

    Windows下的Memcache安装: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd命令界面)下输入 'c:\memca ...

  5. 实验二 用C语言表示进程的调度

    实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...

  6. /proc 【虚拟文件系统】

    在安装新硬件到 Linux 系统之前,你会想要知道当前系统的资源配置状况. Linux 将这类信息全集中在 /proc 文件系统下./proc 目录下的文件都是 Linux 内核虚拟出来的,当你读取它 ...

  7. hadoop启动是常见小问题

    1.先su进入root账户,然后 service iptables stop //关闭防火墙 start-all.sh //启动 2.启动是会显示,如果出错日志保存路径!!!基本所有问题都要去这些日志 ...

  8. .net mvc利用NPOI导入导出excel

    1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  9. TAP/TUN(二)

    tap.c代码      #include<assert.h> #include<fcntl.h> #include<stdio.h> #include<st ...

  10. 利用反射调用方法时,处理ref,out参数需要注意的问题(转)

    转自:http://www.68idc.cn/help/buildlang/ask/20150318283817.html 项目中如下的泛型方法,因为要在运行时,动态指定类型参数,所以要利用反射来实现 ...