1、連接數據庫,導出表結構的sql腳本
2、打開powerdesigner,生成項目空間表
sql腳本用第一步的腳本
3、用script腳本生成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, SHEET, SHEETLIST
? ? ? set EXCEL = CREATEOBJECT("Excel.Application")
? ? ? EXCEL.workbooks.add(-4167)'添加工作表
? ? ? EXCEL.workbooks(1).sheets(1).name ="表結構"
? ? ? set SHEET = EXCEL.workbooks(1).sheets("表結構")
? ? ??
? ? ? EXCEL.workbooks(1).sheets.add
? ? ? EXCEL.workbooks(1).sheets(1).name ="目錄"
? ? ? set SHEETLIST = EXCEL.workbooks(1).sheets("目錄")
? ? ? ShowTableList Model,SHEETLIST
? ? ? ShowProperties Model, SHEET,SHEETLIST
? ? ??
? ? ??
? ? ? EXCEL.workbooks(1).Sheets(2).Select
? ? ? EXCEL.visible = true
? ? ? '設置列寬和自動換行
? ? ? sheet.Columns(1).ColumnWidth = 10?
? ? ? sheet.Columns(2).ColumnWidth = 20?
? ? ? sheet.Columns(3).ColumnWidth = 20?
? ? ? sheet.Columns(4).ColumnWidth = 20?
? ? ? sheet.Columns(5).ColumnWidth = 40?
? ? ? sheet.Columns(6).ColumnWidth = 10?
? ? ? sheet.Columns(1).WrapText =true
? ? ? sheet.Columns(2).WrapText =true
? ? ? sheet.Columns(4).WrapText =true
? ? ? '不顯示網格線
? ? ? EXCEL.ActiveWindow.DisplayGridlines = False
? ? ??
? ? ??
?End If
'-----------------------------------------------------------------------------
' Show properties of tables
'-----------------------------------------------------------------------------
Sub ShowProperties(mdl, sheet,SheetList)
? ?' Show tables of the current model/package
? ?rowsNum=0
? ?beginrow = rowsNum+1
? ?Dim rowIndex?
? ?rowIndex=3
? ?' For each table
? ?output "begin"
? ?Dim tab
? ?For Each tab In mdl.tables
? ? ? ShowTable tab,sheet,rowIndex,sheetList
? ? ? rowIndex = rowIndex +1
? ?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,rowIndex,sheetList)
? ?If IsObject(tab) Then
? ? ?Dim rangFlag
? ? ?rowsNum = rowsNum + 1
? ? ? ' Show properties
? ? ? Output "================================"
? ? ? sheet.cells(rowsNum, 1) =tab.name
? ? ? sheet.cells(rowsNum, 1).HorizontalAlignment=3
? ? ? sheet.cells(rowsNum, 2) = tab.code
? ? ? 'sheet.cells(rowsNum, 5).HorizontalAlignment=3
? ? ? 'sheet.cells(rowsNum, 6) = ""
? ? ? 'sheet.cells(rowsNum, 7) = "表說明"
? ? ? sheet.cells(rowsNum, 3) = tab.comment
? ? ? 'sheet.cells(rowsNum, 8).HorizontalAlignment=3
? ? ? sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Merge
? ? ? '設置超鏈接,從目錄點擊表名去查看表結構
? ? ? '字段中文名 ? ?字段英文名 ? ?字段類型 ? ?注釋 ? ?是否主鍵 ? ?是否非空 ? ?默認值
? ? ? sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "","表結構"&"!B"&rowsNum
? ? ? 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) = "java屬性"
??
? ? ? '設置邊框
? ? ? sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1"
? ? ? 'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"
? ? ? '字體為10號
? ? ? sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Font.Size=10
? ? ? ? ? ? Dim col ' running column
? ? ? ? ? ? Dim colsNum
? ? ? ? ? ? colsNum = 0
? ? ? for each col in tab.columns
? ? ? ? rowsNum = rowsNum + 1
? ? ? ? colsNum = colsNum + 1
? ? ? ? ? sheet.cells(rowsNum, 1) = colsNum
? ? ? ? 'sheet.cells(rowsNum, 3) = ""
? ? ? ? ? 'sheet.cells(rowsNum, 4) = col.name
? ? ? ? ? sheet.cells(rowsNum, 2) = col.code
? ? ? ? ? sheet.cells(rowsNum, 3) = col.datatype
? ? ? ? ? sheet.cells(rowsNum, 5) = col.comment
? ? ? ? ? sheet.cells(rowsNum, 4) = col.length
? ? ? ??
? ? ? next
? ? ? sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle = "3" ? ? ??
? ? ? 'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3"
? ? ? sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size = 10
? ? ? rowsNum = rowsNum + 2
? ? ??
? ? ? Output "FullDescription: " ? ? ? + tab.Name
? ?End If
? ?
End Sub
'-----------------------------------------------------------------------------
' Show List Of Table
'-----------------------------------------------------------------------------
Sub ShowTableList(mdl, SheetList)
? ?' Show tables of the current model/package
? ?Dim rowsNo
? ?rowsNo=1
? ?' For each table
? ?output "begin"
? ?SheetList.cells(rowsNo, 1) = "主題"
? ?SheetList.cells(rowsNo, 2) = "表中文名"
? ?SheetList.cells(rowsNo, 3) = "表英文名"
? ?SheetList.cells(rowsNo, 4) = "表說明"
? ?rowsNo = rowsNo + 1
? ?SheetList.cells(rowsNo, 1) = mdl.name
? ?Dim tab
? ?For Each tab In mdl.tables
? ? ?If IsObject(tab) Then
? ? ? ? ?rowsNo = rowsNo + 1
? ? ? SheetList.cells(rowsNo, 1) = ""
? ? ? SheetList.cells(rowsNo, 2) = tab.name
? ? ? SheetList.cells(rowsNo, 3) = tab.code
? ? ? SheetList.cells(rowsNo, 4) = tab.comment
? ? ?End If
? ?Next
? ? SheetList.Columns(1).ColumnWidth = 20?
? ? ? SheetList.Columns(2).ColumnWidth = 20?
? ? ? SheetList.Columns(3).ColumnWidth = 30?
? ? ?SheetList.Columns(4).ColumnWidth = 60?
? ?output "end"
End Sub