zoukankan      html  css  js  c++  java
  • PowerDesigner从Physical Data Model转Excel

    参考资料: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)在输入范围内添加脚本内容并执行

    '******************************************************************************
    
    '* File:     pdm2excel.txt
    
    '* Title:    pdm export to excel
    
    '* Purpose:  To export the tables and columns to Excel
    
    '* Model:    Physical Data Model
    
    '* Objects:  Table, Column, View
    
    '* Version:  1.0
    
    '******************************************************************************
    
    Option Explicit
    
       Dim rowsNum
    
       rowsNum = 0
    
    '-----------------------------------------------------------------------------
    
    ' Main function
    
    '-----------------------------------------------------------------------------
    
    ' Get the current active model
    
    Dim Model
    
    Set Model = ActiveModel
    
    If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
    
      MsgBox "The current model is not an PDM model."
    
    Else
    
     ' Get the tables collection
    
     '创建EXCEL APP
    
     dim beginrow
    
     DIM EXCEL, SHEET
    
     set EXCEL = CREATEOBJECT("Excel.Application")
    
     EXCEL.workbooks.add(-4167)'添加工作表
    
     EXCEL.workbooks(1).sheets(1).name ="test"
    
     set sheet = EXCEL.workbooks(1).sheets("test")
    
     
    
     ShowProperties Model, SHEET
    
     EXCEL.visible = true
    
     '设置列宽和自动换行
    
     sheet.Columns(1).ColumnWidth = 20 
    
     sheet.Columns(2).ColumnWidth = 40 
    
     sheet.Columns(3).ColumnWidth = 40 
    
     sheet.Columns(1).WrapText =true
    
     sheet.Columns(2).WrapText =true
    
     sheet.Columns(3).WrapText =true
    
     End If
    
    '-----------------------------------------------------------------------------
    
    ' Show properties of tables
    
    '-----------------------------------------------------------------------------
    
    Sub ShowProperties(mdl, sheet)
    
       ' Show tables of the current model/package
    
       rowsNum=0
    
       beginrow = rowsNum+1
    
       ' For each table
    
       output "begin"
    
       Dim tab
    
       For Each tab In mdl.tables
    
          ShowTable tab,sheet
    
       Next
    
       if mdl.tables.count > 0 then
    
            sheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Group
    
       end if
    
       output "end"
    
    End Sub
    
    '-----------------------------------------------------------------------------
    
    ' Show table properties
    
    '-----------------------------------------------------------------------------
    
    Sub ShowTable(tab, sheet)
    
       If IsObject(tab) Then
    
         Dim rangFlag
    
         rowsNum = rowsNum + 1
    
          ' Show properties
    
          Output "================================"
    
          sheet.cells(rowsNum, 1) = "表名"
    
          sheet.cells(rowsNum, 2) =tab.name
          
          sheet.cells(rowsNum, 3) =tab.comment
          
          sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 3)).Interior.Color = vbYellow
          
          sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 3)).font.color=vbRed
          
         rowsNum = rowsNum + 1
    
          sheet.cells(rowsNum, 1) = "属性名"
          
          sheet.cells(rowsNum, 2) = "字段类型"
    
          sheet.cells(rowsNum, 3) = "说明"
    
          '设置边框
    
          sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 3)).Borders.LineStyle = "1"
          
    
    Dim col ' running column
    
    Dim colsNum
    
    colsNum = 0
    
          for each col in tab.columns
    
            rowsNum = rowsNum + 1
    
            colsNum = colsNum + 1
    
          sheet.cells(rowsNum, 1) = col.name
    
          sheet.cells(rowsNum, 2) = col.datatype
    
          sheet.cells(rowsNum, 3) = col.comment
    
          next
    
          sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,3)).Borders.LineStyle = "2"       
    
          rowsNum = rowsNum + 1
    
          
    
          Output "FullDescription: "       + tab.Name
    
       End If
    
    End Sub

     3. 结果

    表名 userinfo 个人信息
    属性名 字段类型 说明
    user_id bigint(20)  
    address varchar(100)  
    degree varchar(2) 最高学历
    working_age int(11) 教龄
    title varchar(50) 职称
  • 相关阅读:
    Android 获取SDCard中某个目录下图片
    Android ListView中 每一项都有不同的布局
    Listview 异步加载图片之优化篇(有图有码有解释)
    Android 实现ListView异步加载图片
    android ListView异步加载图片(双缓存)
    使用 COM 风格的编程接口
    deb包+软件图标+添加到系统菜单+举例安装卸载
    罗将公布手机锤,我感到深深的内疚
    【 D3.js 入门系列 --- 9.6 】 生产的包图
    Junit指定测试运行顺序
  • 原文地址:https://www.cnblogs.com/hiver/p/4664692.html
Copyright © 2011-2022 走看看