博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerDesigner数据库设计导出到Excel
阅读量:7003 次
发布时间:2019-06-27

本文共 12102 字,大约阅读时间需要 40 分钟。

在PowerDesigner 中 ctrl+shift+x 弹出执行脚本界面,输入如下代码就会生成 Excel
 
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, BOOK, SHEET Set EXCEL = CreateObject("Excel.Application") EXCEL.Visible = True Set BOOK = EXCEL.Workbooks.Add(-4167) '新建工作簿  BOOK.Sheets(1).Name = "数据库表结构" Set SHEET = EXCEL.workbooks(1).sheets("数据库表结构")  ShowProperties Model, SHEET EXCEL.visible = true  '设置列宽和自动换行  SHEET.Columns(1).ColumnWidth = 10    SHEET.Columns(2).ColumnWidth = 30    SHEET.Columns(3).ColumnWidth = 20     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 '----------------------------------------------------------------------------- ' 数据表查询 '-----------------------------------------------------------------------------Sub ShowTable(tab, sheet)      If IsObject(tab) Then      Dim rangFlag      sheet.cells(1, 1) = "序号"       sheet.cells(1, 2) = "表名"      sheet.cells(1, 3) = "实体名"      '设置边框       sheet.Range(sheet.cells(1, 1),sheet.cells(1, 3)).Borders.LineStyle = "1"      '设置背景颜色      sheet.Range(sheet.cells(1, 1),sheet.cells(1, 3)).Interior.ColorIndex = "19"       rowsNum = rowsNum + 1      sheet.cells(rowsNum+1, 1) = rowsNum       sheet.cells(rowsNum+1, 2) = tab.code      sheet.cells(rowsNum+1, 3) = tab.name      '设置边框      sheet.Range(sheet.cells(rowsNum+1,1),sheet.cells(rowsNum+1,3)).Borders.LineStyle = "2"       '增加Sheet      BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)      BOOK.Sheets(rowsNum+1).Name = tab.code        Dim shtn      Set shtn = EXCEL.workbooks(1).sheets(tab.code)      '设置列宽和换行       shtn.Columns(1).ColumnWidth = 30          shtn.Columns(2).ColumnWidth = 20          shtn.Columns(3).ColumnWidth = 20       shtn.Columns(5).ColumnWidth = 30          shtn.Columns(6).ColumnWidth = 20           shtn.Columns(1).WrapText =true        shtn.Columns(2).WrapText =true        shtn.Columns(3).WrapText =true       shtn.Columns(5).WrapText =true        shtn.Columns(6).WrapText =true        '设置列标题       shtn.cells(1, 1) = "字段中文名"        shtn.cells(1, 2) = "字段名"       shtn.cells(1, 3) = "字段类型"       shtn.cells(1, 5) = tab.code       shtn.cells(1, 6) = tab.Name       '设置边框        shtn.Range(shtn.cells(1, 1),shtn.cells(1, 3)).Borders.LineStyle = "1"       shtn.Range(shtn.cells(1, 5),shtn.cells(1, 6)).Borders.LineStyle = "1"       '设置背景颜色       shtn.Range(shtn.cells(1, 1),shtn.cells(1, 3)).Interior.ColorIndex = "19"       shtn.Range(shtn.cells(1, 5),shtn.cells(1, 6)).Interior.ColorIndex = "19"       Dim col ' running column       Dim colsNum      Dim rNum       colsNum = 0      rNum = 0             for each col in tab.columns               rNum = rNum + 1               colsNum = colsNum + 1              shtn.cells(rNum+1, 1) = col.name             shtn.cells(rNum+1, 2) = col.code             shtn.cells(rNum+1, 3) = col.datatype             next             shtn.Range(shtn.cells(rNum-colsNum+2,1),shtn.cells(rNum+1,3)).Borders.LineStyle = "2"                     rNum = rNum + 1              Output "FullDescription: "       + tab.Name    End If   End Sub

 

代码一:所有的表在同一个 Sheet 页中
'******************************************************************************'* 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'* Author:   ziyan'* Created:  2012-05-03'* Version:  1.0'******************************************************************************Option Explicit   Dim rowsNum   rowsNum = 0'-----------------------------------------------------------------------------' Main function'-----------------------------------------------------------------------------' Get the current active modelDim ModelSet Model = ActiveModelIf (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(4).ColumnWidth = 20  sheet.Columns(5).ColumnWidth = 20  sheet.Columns(6).ColumnWidth = 15  sheet.Columns(1).WrapText =true sheet.Columns(2).WrapText =true sheet.Columns(4).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) = ""      sheet.cells(rowsNum, 4) = "表名"      sheet.cells(rowsNum, 5) = tab.code      sheet.Range(sheet.cells(rowsNum, 5),sheet.cells(rowsNum, 6)).Merge      rowsNum = rowsNum + 1      sheet.cells(rowsNum, 1) = "属性名"      sheet.cells(rowsNum, 2) = "说明"      sheet.cells(rowsNum, 3) = ""      sheet.cells(rowsNum, 4) = "字段中文名"      sheet.cells(rowsNum, 5) = "字段名"      sheet.cells(rowsNum, 6) = "字段类型"      '设置边框      sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 2)).Borders.LineStyle = "1"      sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 6)).Borders.LineStyle = "1"Dim col ' running columnDim colsNumcolsNum = 0      for each col in tab.columns        rowsNum = rowsNum + 1        colsNum = colsNum + 1      sheet.cells(rowsNum, 1) = col.name      sheet.cells(rowsNum, 2) = col.comment        sheet.cells(rowsNum, 3) = ""      sheet.cells(rowsNum, 4) = col.name      sheet.cells(rowsNum, 5) = col.code      sheet.cells(rowsNum, 6) = col.datatype      next      sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,2)).Borders.LineStyle = "2"             sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,6)).Borders.LineStyle = "2"      rowsNum = rowsNum + 1       Output "FullDescription: "       + tab.Name   End IfEnd Sub

代码二:每个表都会新建一个 Sheet 页,第一个 Sheet 页上是所有表的列表

'****************************************************************************** '* 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 '* Author:   Chirs '* Created:  2015-01-28 '* 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, BOOK, SHEET Set EXCEL = CreateObject("Excel.Application") EXCEL.Visible = True Set BOOK = EXCEL.Workbooks.Add(-4167) '新建工作簿  BOOK.Sheets(1).Name = "数据库表结构" Set SHEET = EXCEL.workbooks(1).sheets("数据库表结构")  ShowProperties Model, SHEET EXCEL.visible = true  '设置列宽和自动换行  SHEET.Columns(1).ColumnWidth = 10    SHEET.Columns(2).ColumnWidth = 30    SHEET.Columns(3).ColumnWidth = 20     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 '----------------------------------------------------------------------------- ' 数据表查询 '-----------------------------------------------------------------------------Sub ShowTable(tab, sheet)      If IsObject(tab) Then      Dim rangFlag      sheet.cells(1, 1) = "序号"       sheet.cells(1, 2) = "表名"      sheet.cells(1, 3) = "实体名"      '设置边框       sheet.Range(sheet.cells(1, 1),sheet.cells(1, 3)).Borders.LineStyle = "1"      '设置背景颜色      sheet.Range(sheet.cells(1, 1),sheet.cells(1, 3)).Interior.ColorIndex = "19"       rowsNum = rowsNum + 1      sheet.cells(rowsNum+1, 1) = rowsNum       sheet.cells(rowsNum+1, 2) = tab.code      sheet.cells(rowsNum+1, 3) = tab.name      '设置边框      sheet.Range(sheet.cells(rowsNum+1,1),sheet.cells(rowsNum+1,3)).Borders.LineStyle = "2"       '增加Sheet      BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)      BOOK.Sheets(rowsNum+1).Name = tab.code        Dim shtn      Set shtn = EXCEL.workbooks(1).sheets(tab.code)      '设置列宽和换行       shtn.Columns(1).ColumnWidth = 30          shtn.Columns(2).ColumnWidth = 20          shtn.Columns(3).ColumnWidth = 20       shtn.Columns(5).ColumnWidth = 30          shtn.Columns(6).ColumnWidth = 20           shtn.Columns(1).WrapText =true        shtn.Columns(2).WrapText =true        shtn.Columns(3).WrapText =true       shtn.Columns(5).WrapText =true        shtn.Columns(6).WrapText =true        '设置列标题       shtn.cells(1, 1) = "字段中文名"        shtn.cells(1, 2) = "字段名"       shtn.cells(1, 3) = "字段类型"       shtn.cells(1, 5) = tab.code       shtn.cells(1, 6) = tab.Name       '设置边框        shtn.Range(shtn.cells(1, 1),shtn.cells(1, 3)).Borders.LineStyle = "1"       shtn.Range(shtn.cells(1, 5),shtn.cells(1, 6)).Borders.LineStyle = "1"       '设置背景颜色       shtn.Range(shtn.cells(1, 1),shtn.cells(1, 3)).Interior.ColorIndex = "19"       shtn.Range(shtn.cells(1, 5),shtn.cells(1, 6)).Interior.ColorIndex = "19"       Dim col ' running column       Dim colsNum      Dim rNum       colsNum = 0      rNum = 0             for each col in tab.columns               rNum = rNum + 1               colsNum = colsNum + 1              shtn.cells(rNum+1, 1) = col.name             shtn.cells(rNum+1, 2) = col.code             shtn.cells(rNum+1, 3) = col.datatype             next             shtn.Range(shtn.cells(rNum-colsNum+2,1),shtn.cells(rNum+1,3)).Borders.LineStyle = "2"                     rNum = rNum + 1              Output "FullDescription: "       + tab.Name    End If   End Sub

 

转载于:https://www.cnblogs.com/cnsdhzzl/p/9765266.html

你可能感兴趣的文章
对称加密算法-DES
查看>>
Android BroadcastReceiver
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
jar包版本冲突问题
查看>>
物联网世界常见传输方式简介(思维导图)
查看>>
KSM导致的警告“ ksmtuned .... read-only system ” 的一些说明
查看>>
Objective C中数组排序的三种方法
查看>>
dedecms验证自定义表单不为空
查看>>
用户测评 | EDAS Serverless 上手体验
查看>>
mysql导出xls的格式
查看>>
开发者招聘节 | 2019阿里巴巴技术面试题分享(陆续放出)
查看>>
Linux 虚拟化实践之KVM
查看>>
DigitalOcean的旅程:从被TechStars拒绝走向云托管服务宠儿
查看>>
脚踏编程及接线方法
查看>>
Linux第三周作业
查看>>
Python内置数据结构3
查看>>
五、性能监视(2)Windows性能日志
查看>>
PowerShell在Exchange2010下快速开启邮箱[续]
查看>>
volatile关键字
查看>>