1. 程式人生 > >資料庫表結構轉成設計書,PowerDesigner 表格匯出為excel

資料庫表結構轉成設計書,PowerDesigner 表格匯出為excel

資料庫中的表匯入到PowerDesigner中並轉為excel文件

1、開啟PowerDesigner12,在選單中按照如下方式進行操作

   file->Reverse Engineer->DataBase

   點選後,彈出 New Physical Data Model 的對話方塊

 

2、在General選項卡中

    Model name:模板名字,自己命名。

    DMBMS    :根據需要選擇,我選擇的是ORACLEVersion 10g

點確定後彈出 Database Reverse Engineering Option 對話方塊

 

3  Selection選項卡中,選中Using a data source選項

   注意如果是第一次匯入資料,需要你先自己配製ODBC資料來源,方法如下:

1)點選 下面 右側的資料庫 連線按鈕,彈出 Connect to a Data Source 的對話方塊

2)選中 ODBC machine data source 選項,點選 Modify按鈕右邊的 Configure 按鈕   彈出Configure Data Connections

 

3)在 ODBC Machine Data Sources選項卡   下面的工具欄中點選 第二個 資料庫 配置按鈕(Add Data Source(Ctrl+N)) 彈出建立新資料來源視窗 ,選擇檔案資料來源,    選擇相應的資料來源驅動程式(我選Oracle),點下一步(Modify),給資料來源起個名字,選擇伺服器,下一步,輸入相應的密碼 

 

配置完畢 後 點選確定

 

4,選擇剛剛配置的資料來源,輸入相應的使用者名稱和密碼   即可。 

 

=====得到PDM物理設計說明書

選中tables
ctrl + shift +x 然後執行指令碼

  1 '******************************************************************************
  2 Option Explicit
  3    Dim rowsNum
  4    rowsNum = 0
  5 '-----------------------------------------------------------------------------
  6 ' Main function
  7 '-----------------------------------------------------------------------------
  8 ' Get the current active model
  9     Dim Model
 10     Set Model = ActiveModel
 11     If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
 12        MsgBox "The current model is not an PDM model."
 13     Else
 14       ' Get the tables collection
 15       '建立EXCEL APP
 16       dim beginrow
 17       DIM EXCEL, SHEET, SHEETLIST
 18       set EXCEL = CREATEOBJECT("Excel.Application")
 19       EXCEL.workbooks.add(-4167)'新增工作表
 20       EXCEL.workbooks(1).sheets(1).name ="表結構"
 21       set SHEET = EXCEL.workbooks(1).sheets("表結構")
 22       
 23       EXCEL.workbooks(1).sheets.add
 24       EXCEL.workbooks(1).sheets(1).name ="目錄"
 25       set SHEETLIST = EXCEL.workbooks(1).sheets("目錄")
 26       ShowTableList Model,SHEETLIST
 27 
 28       ShowProperties Model, SHEET,SHEETLIST
 29       
 30       
 31       EXCEL.workbooks(1).Sheets(2).Select
 32       EXCEL.visible = true
 33       '設定列寬和自動換行
 34       sheet.Columns(1).ColumnWidth = 20 
 35       sheet.Columns(2).ColumnWidth = 20 
 36       sheet.Columns(3).ColumnWidth = 20 
 37       sheet.Columns(4).ColumnWidth = 40 
 38       sheet.Columns(5).ColumnWidth = 10 
 39       sheet.Columns(6).ColumnWidth = 10 
 40       sheet.Columns(1).WrapText =true
 41       sheet.Columns(2).WrapText =true
 42       sheet.Columns(4).WrapText =true
 43       '不顯示網格線
 44       EXCEL.ActiveWindow.DisplayGridlines = False
 45       
 46       
 47  End If
 48 '-----------------------------------------------------------------------------
 49 ' Show properties of tables
 50 '-----------------------------------------------------------------------------
 51 Sub ShowProperties(mdl, sheet,SheetList)
 52    ' Show tables of the current model/package
 53    rowsNum=0
 54    beginrow = rowsNum+1
 55    Dim rowIndex 
 56    rowIndex=3
 57    ' For each table
 58    output "begin"
 59    Dim tab
 60    For Each tab In mdl.tables
 61       ShowTable tab,sheet,rowIndex,sheetList
 62       rowIndex = rowIndex +1
 63    Next
 64    if mdl.tables.count > 0 then
 65         sheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Group
 66    end if
 67    output "end"
 68 End Sub
 69 '-----------------------------------------------------------------------------
 70 ' Show table properties
 71 '-----------------------------------------------------------------------------
 72 Sub ShowTable(tab, sheet,rowIndex,sheetList)
 73    If IsObject(tab) Then
 74      Dim rangFlag
 75      rowsNum = rowsNum + 1
 76       ' Show properties
 77       Output "================================"
 78       sheet.cells(rowsNum, 1) =tab.name
 79       sheet.cells(rowsNum, 1).HorizontalAlignment=3
 80       sheet.cells(rowsNum, 2) = tab.code
 81       'sheet.cells(rowsNum, 5).HorizontalAlignment=3
 82       'sheet.cells(rowsNum, 6) = ""
 83       'sheet.cells(rowsNum, 7) = "表說明"
 84       sheet.cells(rowsNum, 3) = tab.comment
 85       'sheet.cells(rowsNum, 8).HorizontalAlignment=3
 86       sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Merge
 87       '設定超連結,從目錄點選表名去查看錶結構
 88       '欄位中文名    欄位英文名    欄位型別    註釋    是否主鍵    是否非空    預設值
 89       sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "","表結構"&"!B"&rowsNum
 90       rowsNum = rowsNum + 1
 91       sheet.cells(rowsNum, 1) = "欄位中文名"
 92       sheet.cells(rowsNum, 2) = "欄位英文名"
 93       sheet.cells(rowsNum, 3) = "欄位型別"
 94       sheet.cells(rowsNum, 4) = "註釋"
 95       sheet.cells(rowsNum, 5) = "是否主鍵"
 96       sheet.cells(rowsNum, 6) = "是否非空"
 97       sheet.cells(rowsNum, 7) = "預設值"
 98       '設定邊框
 99       sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1"
100       'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"
101       '字型為10號
102       sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Font.Size=10
103             Dim col ' running column
104             Dim colsNum
105             colsNum = 0
106       for each col in tab.columns
107         rowsNum = rowsNum + 1
108         colsNum = colsNum + 1
109           sheet.cells(rowsNum, 1) = col.name
110         'sheet.cells(rowsNum, 3) = ""
111           'sheet.cells(rowsNum, 4) = col.name
112           sheet.cells(rowsNum, 2) = col.code
113           sheet.cells(rowsNum, 3) = col.datatype
114         sheet.cells(rowsNum, 4) = col.comment
115           If col.Primary = true Then
116         sheet.cells(rowsNum, 5) = "Y" 
117         Else
118         sheet.cells(rowsNum, 5) = " " 
119         End If
120         If col.Mandatory = true Then
121         sheet.cells(rowsNum, 6) = "Y" 
122         Else
123         sheet.cells(rowsNum, 6) = " " 
124         End If
125         sheet.cells(rowsNum, 7) =  col.defaultvalue
126       next
127       sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle = "3"       
128       'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3"
129       sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size = 10
130       rowsNum = rowsNum + 2
131       
132       Output "FullDescription: "       + tab.Name
133    End If
134    
135 End Sub
136 '-----------------------------------------------------------------------------
137 ' Show List Of Table
138 '-----------------------------------------------------------------------------
139 Sub ShowTableList(mdl, SheetList)
140    ' Show tables of the current model/package
141    Dim rowsNo
142    rowsNo=1
143    ' For each table
144    output "begin"
145    SheetList.cells(rowsNo, 1) = "主題"
146    SheetList.cells(rowsNo, 2) = "表中文名"
147    SheetList.cells(rowsNo, 3) = "表英文名"
148    SheetList.cells(rowsNo, 4) = "表說明"
149    rowsNo = rowsNo + 1
150    SheetList.cells(rowsNo, 1) = mdl.name
151    Dim tab
152    For Each tab In mdl.tables
153      If IsObject(tab) Then
154          rowsNo = rowsNo + 1
155       SheetList.cells(rowsNo, 1) = ""
156       SheetList.cells(rowsNo, 2) = tab.name
157       SheetList.cells(rowsNo, 3) = tab.code
158       SheetList.cells(rowsNo, 4) = tab.comment
159      End If
160    Next
161     SheetList.Columns(1).ColumnWidth = 20 
162       SheetList.Columns(2).ColumnWidth = 20 
163       SheetList.Columns(3).ColumnWidth = 30 
164      SheetList.Columns(4).ColumnWidth = 60 
165    output "end"
166 End Sub
View Code

 

該程式碼為巨集程式碼

 

參考:

https://blog.csdn.net/a824444865/article/details/50072655

https://www.cnblogs.com/gaocong/p/6553080.html