• PDM文件转换生成excel文件


    执行步骤:
    1、菜单找到Tools 
    2、下拉中找到Execute Commands 
    3、选中Edit/Run Script 
    4、弹窗里黏贴上上面的代码 
    5、执行
    场景一:
    '******************************************************************************  
    '* Powerdesigner 导出Excel格式数据字典 导出Excel格式文件
    '* Created:  
    '* Version:  1.0  
    '******************************************************************************  

    1. Option Explicit  
    2.    Dim rowsNum  
    3.    rowsNum = 2
    4. Dim Model  
    5. Set Model = ActiveModel  
    6. If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then  
    7.   Debug.print "null"
    8. Else  
    9.     ' Get the tables collection  
    10.     '创建EXCEL APP  
    11.     dim beginrow  
    12.     DIM EXCEL, SHEET  
    13.     set EXCEL = CREATEOBJECT("Excel.Application")  
    14.     EXCEL.workbooks.add  '添加工作表  
    15.     SET sheet = EXCEL.workbooks(1).sheets(1)  
    16.     sheet.name ="数据字典"
    17.    rowsNum=1  
    18.      sheet.cells(rowsNum, 1) = "中文名"  
    19.      sheet.cells(rowsNum, 2) = "字段名"  
    20.      sheet.cells(rowsNum, 3) = "类型"  
    21.      sheet.cells(rowsNum, 4) = "长度"  
    22.      sheet.cells(rowsNum, 5) = "主键"  
    23.      sheet.cells(rowsNum, 6) = "索引"  
    24.      sheet.cells(rowsNum, 7) = "不可空"  
    25.      sheet.cells(rowsNum, 8) = "默认值"  
    26.      sheet.cells(rowsNum, 9) = "说明"  
    27.      sheet.cells(rowsNum, 10) = "表名称"
    28.      sheet.cells(rowsNum, 11) = "表中文名称"
    29.      sheet.cells(rowsNum, 12) = "表说明"
    30.      sheet.Range(sheet.cells(rowsNum,1),sheet.cells(rowsNum,12)).Interior.Color=rgb(166,166,166)      
    31.    beginrow = rowsNum+1  
    32.    Dim tab  
    33.    For Each tab In Model.tables  
    34.       TableLoop tab,SHEET  
    35.    Next    
    36.     EXCEL.visible = true  
    37.     '设置列宽和自动换行  
    38.     sheet.Columns(1).ColumnWidth  =10
    39.     sheet.Columns(2).ColumnWidth  =15
    40.     sheet.Columns(4).ColumnWidth  =20
    41.     sheet.Columns(5).ColumnWidth  =15
    42.     sheet.Columns(6).ColumnWidth  =15
    43.     sheet.Columns("C:C").EntireColumn.AutoFit
    44.     sheet.Columns("i:i").EntireColumn.AutoFit    
    45. End If  
    46. Sub TableLoop(tab, sheet)  
    47.    If IsObject(tab) Then  
    48.       Dim rangFlag  
    49.       Dim col ' running column
    50.       Dim colsNum  
    51.       colsNum = 0  
    52.       for each col in tab.columns  
    53.          rowsNum = rowsNum + 1  
    54.          colsNum = colsNum + 1  
    55.          sheet.cells(rowsNum, 1) = col.name
    56.          sheet.cells(rowsNum, 2) = col.code
    57.          sheet.cells(rowsNum, 3) = col.datatype
    58.          sheet.cells(rowsNum, 4) = IIF(col.Length<>0,col.Length,"")
    59.          sheet.cells(rowsNum, 5) = IIF(col.Primary,"√","")
    60.          sheet.cells(rowsNum, 6) = IIF(col.Primary,"√","")
    61.          sheet.cells(rowsNum, 7) = IIF(col.Mandatory,"√","")
    62.          sheet.cells(rowsNum, 8) = "无"
    63.          sheet.cells(rowsNum, 10) = tab.code
    64.          sheet.cells(rowsNum, 11) = tab.name
    65.          sheet.cells(rowsNum, 12) = tab.comment
    66.       next  
    67.       '设置边框  
    68.       DIM RanagBorder
    69.       SET RanagBorder =sheet.Range(sheet.cells(rowsNum-colsNum,1),sheet.cells(rowsNum,12))
    70.       RanagBorder.Borders.LineStyle = "1"
    71.       'RaneBorderFun RanagBorder        
    72.    End If  
    73. End Sub  
    74. function IIF(flg,tstr,fstr)
    75.    if flg then
    76.       IIF= tstr
    77.    else
    78.       IIF= fstr
    79.    end if
    80. End function

    场景二:
    '******************************************************************************  
    '* Powerdesigner 导出Excel格式数据字典 导出Excel格式文件[分包存放]
    '* Created: 根网科技 
    '* Version:  1.0  
    '******************************************************************************  

    1. Option Explicit  
    2.    Dim rowsNum  
    3.    rowsNum = 2
    4. Dim Model
    5. Dim  pkg
    6. Set Model = ActiveModel
    7. If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then  
    8.   Debug.print "null"
    9. else
    10.       ' Get the tables collection  
    11.     '创建EXCEL APP  
    12.     dim beginrow  ,p
    13.     DIM EXCEL, SHEET  
    14.     set EXCEL = CREATEOBJECT("Excel.Application")  
    15.     EXCEL.workbooks.add  '添加工作表
    16.     For Each pkg In Model.packages  
    17.         'MsgBox pkg.name         
    18.         'MsgBox EXCEL.workbooks(1).Sheets.Count        
    19.         SET sheet = EXCEL.workbooks(1).sheets(1)  
    20.         sheet.name =pkg.name
    21.         'MsgBox sheet.name
    22.         rowsNum=1  
    23.          sheet.cells(rowsNum, 1) = "中文名"  
    24.          sheet.cells(rowsNum, 2) = "字段名"  
    25.          sheet.cells(rowsNum, 3) = "类型"  
    26.          sheet.cells(rowsNum, 4) = "长度"  
    27.          sheet.cells(rowsNum, 5) = "主键"  
    28.          sheet.cells(rowsNum, 6) = "索引"  
    29.          sheet.cells(rowsNum, 7) = "不可空"  
    30.          sheet.cells(rowsNum, 8) = "默认值"  
    31.          sheet.cells(rowsNum, 9) = "说明"  
    32.          sheet.cells(rowsNum, 10) = "表名称"
    33.          sheet.cells(rowsNum, 11) = "表中文名称"
    34.          sheet.cells(rowsNum, 12) = "表说明"
    35.          sheet.Range(sheet.cells(rowsNum,1),sheet.cells(rowsNum,12)).Interior.Color=rgb(166,166,166)      
    36.        beginrow = rowsNum+1  
    37.        Dim tab  
    38.        For Each tab In pkg.tables  
    39.           TableLoop tab,SHEET  
    40.           p=1
    41.           'MsgBox sheet.name
    42.        Next    
    43.        EXCEL.workbooks(1).sheets.add  '添加工作表
    44.     next
    45.             EXCEL.visible = true  
    46.         '设置列宽和自动换行  
    47.         sheet.Columns(1).ColumnWidth  =10
    48.         sheet.Columns(2).ColumnWidth  =15
    49.         sheet.Columns(4).ColumnWidth  =20
    50.         sheet.Columns(5).ColumnWidth  =15
    51.         sheet.Columns(6).ColumnWidth  =15
    52.         sheet.Columns("C:C").EntireColumn.AutoFit
    53.         sheet.Columns("i:i").EntireColumn.AutoFit
    54. end if
    55. Sub TableLoop(tab, sheet)  
    56.    If IsObject(tab) Then  
    57.       Dim rangFlag  
    58.       Dim col ' running column
    59.       Dim colsNum  
    60.       colsNum = 0  
    61.       for each col in tab.columns  
    62.          rowsNum = rowsNum + 1  
    63.          colsNum = colsNum + 1  
    64.          sheet.cells(rowsNum, 1) = col.name
    65.          sheet.cells(rowsNum, 2) = col.code
    66.          sheet.cells(rowsNum, 3) = col.datatype
    67.          sheet.cells(rowsNum, 4) = IIF(col.Length<>0,col.Length,"")
    68.          sheet.cells(rowsNum, 5) = IIF(col.Primary,"√","")
    69.          sheet.cells(rowsNum, 6) = IIF(col.Primary,"√","")
    70.          sheet.cells(rowsNum, 7) = IIF(col.Mandatory,"√","")
    71.          sheet.cells(rowsNum, 8) = "无"
    72.          sheet.cells(rowsNum, 10) = tab.code
    73.          sheet.cells(rowsNum, 11) = tab.name
    74.          sheet.cells(rowsNum, 12) = tab.comment
    75.       next  
    76.       '设置边框  
    77.       DIM RanagBorder
    78.       SET RanagBorder =sheet.Range(sheet.cells(rowsNum-colsNum,1),sheet.cells(rowsNum,12))
    79.       RanagBorder.Borders.LineStyle = "1"
    80.       'RaneBorderFun RanagBorder        
    81.    End If  
    82. End Sub  
    83. function IIF(flg,tstr,fstr)
    84.    if flg then
    85.       IIF= tstr
    86.    else
    87.       IIF= fstr
    88.    end if
    89. End function

  • 相关阅读:
    轻松学会jQuery选择器的用法
    阿里巴巴战略放弃“天猫香港”,专注于改善跨境电子商务
    第五章 Ambari二次开发之自定义Flink服务概述
    LeetCode //C - 148. Sort List
    【licode】Single Peer Connection - Feature Review
    Java Stream流 List< T >转换Map方法汇总合集(大概是最全吧)
    【PAT甲级】1108 Finding Average
    SpringBoot多数据源
    动态 | 10月数据安全重要政策法规、文件汇总
    Shiro - Shiro简介;Shiro与Spring Security区别;Spring Boot集成Shiro
  • 原文地址:https://blog.csdn.net/liu_xzhen/article/details/133879746