資料庫表結構轉成設計書,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 SubView Code
該程式碼為巨集程式碼
參考:
https://blog.csdn.net/a824444865/article/details/50072655
https://www.cnblogs.com/gaocong/p/6553080.html