在PowerDesigner 中 ctrl+shift+x 弹出执行脚本界面,输入如下代码就会生成 Excel
 
  1. Option Explicit
  2. Dim rowsNum
  3. rowsNum =
  4. '-----------------------------------------------------------------------------
  5. ' Main function
  6. '-----------------------------------------------------------------------------
  7. ' Get the current active model
  8. Dim Model
  9. Set Model = ActiveModel
  10. If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
  11. MsgBox "The current model is not an PDM model."
  12. Else
  13. ' Get the tables collection
  14. '创建EXCEL APP
  15.  
  16. Dim beginrow
  17. Dim EXCEL, BOOK, SHEET
  18. Set EXCEL = CreateObject("Excel.Application")
  19. EXCEL.Visible = True
  20. Set BOOK = EXCEL.Workbooks.Add(-) '新建工作簿
  21.  
  22. BOOK.Sheets().Name = "数据库表结构"
  23. Set SHEET = EXCEL.workbooks().sheets("数据库表结构")
  24.  
  25. ShowProperties Model, SHEET
  26. EXCEL.visible = true
  27. '设置列宽和自动换行
  28. SHEET.Columns().ColumnWidth =
  29. SHEET.Columns().ColumnWidth =
  30. SHEET.Columns().ColumnWidth =
  31.  
  32. SHEET.Columns().WrapText =true
  33. SHEET.Columns().WrapText =true
  34. SHEET.Columns().WrapText =true
  35.  
  36. End If
  37.  
  38. '-----------------------------------------------------------------------------
  39. ' Show properties of tables
  40. '-----------------------------------------------------------------------------
  41. Sub ShowProperties(mdl, sheet)
  42. ' Show tables of the current model/package
  43. rowsNum=
  44. beginrow = rowsNum+
  45. ' For each table
  46. output "begin"
  47. Dim tab
  48. For Each tab In mdl.tables
  49. ShowTable tab,sheet
  50. Next
  51. if mdl.tables.count > then
  52. sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
  53. end if
  54. output "end"
  55. End Sub
  56.  
  57. '-----------------------------------------------------------------------------
  58. ' 数据表查询
  59. '-----------------------------------------------------------------------------
  60. Sub ShowTable(tab, sheet)
  61. If IsObject(tab) Then
  62. Dim rangFlag
  63. sheet.cells(, ) = "序号"
  64. sheet.cells(, ) = "表名"
  65. sheet.cells(, ) = "实体名"
  66. '设置边框
  67. sheet.Range(sheet.cells(, ),sheet.cells(, )).Borders.LineStyle = ""
  68. '设置背景颜色
  69. sheet.Range(sheet.cells(, ),sheet.cells(, )).Interior.ColorIndex = ""
  70.  
  71. rowsNum = rowsNum +
  72. sheet.cells(rowsNum+, ) = rowsNum
  73. sheet.cells(rowsNum+, ) = tab.code
  74. sheet.cells(rowsNum+, ) = tab.name
  75. '设置边框
  76. sheet.Range(sheet.cells(rowsNum+,),sheet.cells(rowsNum+,)).Borders.LineStyle = ""
  77.  
  78. '增加Sheet
  79. BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)
  80. BOOK.Sheets(rowsNum+).Name = tab.code
  81.  
  82. Dim shtn
  83. Set shtn = EXCEL.workbooks().sheets(tab.code)
  84. '设置列宽和换行
  85. shtn.Columns().ColumnWidth =
  86. shtn.Columns().ColumnWidth =
  87. shtn.Columns().ColumnWidth =
  88. shtn.Columns().ColumnWidth =
  89. shtn.Columns().ColumnWidth =
  90.  
  91. shtn.Columns().WrapText =true
  92. shtn.Columns().WrapText =true
  93. shtn.Columns().WrapText =true
  94. shtn.Columns().WrapText =true
  95. shtn.Columns().WrapText =true
  96.  
  97. '设置列标题
  98. shtn.cells(, ) = "字段中文名"
  99. shtn.cells(, ) = "字段名"
  100. shtn.cells(, ) = "字段类型"
  101. shtn.cells(, ) = tab.code
  102. shtn.cells(, ) = tab.Name
  103. '设置边框
  104. shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = ""
  105. shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = ""
  106. '设置背景颜色
  107. shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = ""
  108. shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = ""
  109.  
  110. Dim col ' running column
  111. Dim colsNum
  112. Dim rNum
  113. colsNum =
  114. rNum =
  115. for each col in tab.columns
  116. rNum = rNum +
  117. colsNum = colsNum +
  118.  
  119. shtn.cells(rNum+, ) = col.name
  120. shtn.cells(rNum+, ) = col.code
  121. shtn.cells(rNum+, ) = col.datatype
  122. next
  123. shtn.Range(shtn.cells(rNum-colsNum+,),shtn.cells(rNum+,)).Borders.LineStyle = ""
  124. rNum = rNum +
  125.  
  126. Output "FullDescription: " + tab.Name
  127.  
  128. End If
  129. End Sub
代码一:所有的表在同一个 Sheet 页中
  1. '******************************************************************************
  2. '* File: pdm2excel.txt
  3. '* Title: pdm export to excel
  4. '* Purpose: To export the tables and columns to Excel
  5. '* Model: Physical Data Model
  6. '* Objects: Table, Column, View
  7. '* Author: ziyan
  8. '* Created: 2012-05-03
  9. '* Version: 1.0
  10. '******************************************************************************
  11. Option Explicit
  12. Dim rowsNum
  13. rowsNum =
  14. '-----------------------------------------------------------------------------
  15. ' Main function
  16. '-----------------------------------------------------------------------------
  17. ' Get the current active model
  18. Dim Model
  19. Set Model = ActiveModel
  20. If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
  21. MsgBox "The current model is not an PDM model."
  22. Else
  23. ' Get the tables collection
  24. '创建EXCEL APP
  25. dim beginrow
  26. DIM EXCEL, SHEET
  27. set EXCEL = CREATEOBJECT("Excel.Application")
  28. EXCEL.workbooks.add(-)'添加工作表
  29. EXCEL.workbooks().sheets().name ="test"
  30. set sheet = EXCEL.workbooks().sheets("test")
  31.  
  32. ShowProperties Model, SHEET
  33. EXCEL.visible = true
  34. '设置列宽和自动换行
  35. sheet.Columns().ColumnWidth =
  36. sheet.Columns().ColumnWidth =
  37. sheet.Columns().ColumnWidth =
  38. sheet.Columns().ColumnWidth =
  39. sheet.Columns().ColumnWidth =
  40. sheet.Columns().WrapText =true
  41. sheet.Columns().WrapText =true
  42. sheet.Columns().WrapText =true
  43. End If
  44. '-----------------------------------------------------------------------------
  45. ' Show properties of tables
  46. '-----------------------------------------------------------------------------
  47. Sub ShowProperties(mdl, sheet)
  48. ' Show tables of the current model/package
  49. rowsNum=
  50. beginrow = rowsNum+
  51. ' For each table
  52. output "begin"
  53. Dim tab
  54. For Each tab In mdl.tables
  55. ShowTable tab,sheet
  56. Next
  57. if mdl.tables.count > then
  58. sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
  59. end if
  60. output "end"
  61. End Sub
  62. '-----------------------------------------------------------------------------
  63. ' Show table properties
  64. '-----------------------------------------------------------------------------
  65. Sub ShowTable(tab, sheet)
  66. If IsObject(tab) Then
  67. Dim rangFlag
  68. rowsNum = rowsNum +
  69. ' Show properties
  70. Output "================================"
  71. sheet.cells(rowsNum, ) = "实体名"
  72. sheet.cells(rowsNum, ) =tab.name
  73. sheet.cells(rowsNum, ) = ""
  74. sheet.cells(rowsNum, ) = "表名"
  75. sheet.cells(rowsNum, ) = tab.code
  76. sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Merge
  77. rowsNum = rowsNum +
  78. sheet.cells(rowsNum, ) = "属性名"
  79. sheet.cells(rowsNum, ) = "说明"
  80. sheet.cells(rowsNum, ) = ""
  81. sheet.cells(rowsNum, ) = "字段中文名"
  82. sheet.cells(rowsNum, ) = "字段名"
  83. sheet.cells(rowsNum, ) = "字段类型"
  84. '设置边框
  85. sheet.Range(sheet.cells(rowsNum-, ),sheet.cells(rowsNum, )).Borders.LineStyle = ""
  86. sheet.Range(sheet.cells(rowsNum-, ),sheet.cells(rowsNum, )).Borders.LineStyle = ""
  87. Dim col ' running column
  88. Dim colsNum
  89. colsNum =
  90. for each col in tab.columns
  91. rowsNum = rowsNum +
  92. colsNum = colsNum +
  93. sheet.cells(rowsNum, ) = col.name
  94. sheet.cells(rowsNum, ) = col.comment
  95. sheet.cells(rowsNum, ) = ""
  96. sheet.cells(rowsNum, ) = col.name
  97. sheet.cells(rowsNum, ) = col.code
  98. sheet.cells(rowsNum, ) = col.datatype
  99. next
  100. sheet.Range(sheet.cells(rowsNum-colsNum+,),sheet.cells(rowsNum,)).Borders.LineStyle = ""
  101. sheet.Range(sheet.cells(rowsNum-colsNum+,),sheet.cells(rowsNum,)).Borders.LineStyle = ""
  102. rowsNum = rowsNum +
  103.  
  104. Output "FullDescription: " + tab.Name
  105. End If
  106. End Sub

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

  1. '******************************************************************************
  2. '* File: pdm2excel.txt
  3. '* Title: pdm export to excel
  4. '* Purpose: To export the tables and columns to Excel
  5. '* Model: Physical Data Model
  6. '* Objects: Table, Column, View
  7. '* Author: Chirs
  8. '* Created: 2015-01-28
  9. '* Version: 1.0
  10. '******************************************************************************
  11. Option Explicit
  12. Dim rowsNum
  13. rowsNum =
  14. '-----------------------------------------------------------------------------
  15. ' Main function
  16. '-----------------------------------------------------------------------------
  17. ' Get the current active model
  18. Dim Model
  19. Set Model = ActiveModel
  20. If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
  21. MsgBox "The current model is not an PDM model."
  22. Else
  23. ' Get the tables collection
  24. '创建EXCEL APP
  25.  
  26. Dim beginrow
  27. Dim EXCEL, BOOK, SHEET
  28. Set EXCEL = CreateObject("Excel.Application")
  29. EXCEL.Visible = True
  30. Set BOOK = EXCEL.Workbooks.Add(-) '新建工作簿
  31.  
  32. BOOK.Sheets().Name = "数据库表结构"
  33. Set SHEET = EXCEL.workbooks().sheets("数据库表结构")
  34.  
  35. ShowProperties Model, SHEET
  36. EXCEL.visible = true
  37. '设置列宽和自动换行
  38. SHEET.Columns().ColumnWidth =
  39. SHEET.Columns().ColumnWidth =
  40. SHEET.Columns().ColumnWidth =
  41.  
  42. SHEET.Columns().WrapText =true
  43. SHEET.Columns().WrapText =true
  44. SHEET.Columns().WrapText =true
  45.  
  46. End If
  47.  
  48. '-----------------------------------------------------------------------------
  49. ' Show properties of tables
  50. '-----------------------------------------------------------------------------
  51. Sub ShowProperties(mdl, sheet)
  52. ' Show tables of the current model/package
  53. rowsNum=
  54. beginrow = rowsNum+
  55. ' For each table
  56. output "begin"
  57. Dim tab
  58. For Each tab In mdl.tables
  59. ShowTable tab,sheet
  60. Next
  61. if mdl.tables.count > then
  62. sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
  63. end if
  64. output "end"
  65. End Sub
  66.  
  67. '-----------------------------------------------------------------------------
  68. ' 数据表查询
  69. '-----------------------------------------------------------------------------
  70. Sub ShowTable(tab, sheet)
  71. If IsObject(tab) Then
  72. Dim rangFlag
  73. sheet.cells(, ) = "序号"
  74. sheet.cells(, ) = "表名"
  75. sheet.cells(, ) = "实体名"
  76. '设置边框
  77. sheet.Range(sheet.cells(, ),sheet.cells(, )).Borders.LineStyle = ""
  78. '设置背景颜色
  79. sheet.Range(sheet.cells(, ),sheet.cells(, )).Interior.ColorIndex = ""
  80.  
  81. rowsNum = rowsNum +
  82. sheet.cells(rowsNum+, ) = rowsNum
  83. sheet.cells(rowsNum+, ) = tab.code
  84. sheet.cells(rowsNum+, ) = tab.name
  85. '设置边框
  86. sheet.Range(sheet.cells(rowsNum+,),sheet.cells(rowsNum+,)).Borders.LineStyle = ""
  87.  
  88. '增加Sheet
  89. BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)
  90. BOOK.Sheets(rowsNum+).Name = tab.code
  91.  
  92. Dim shtn
  93. Set shtn = EXCEL.workbooks().sheets(tab.code)
  94. '设置列宽和换行
  95. shtn.Columns().ColumnWidth =
  96. shtn.Columns().ColumnWidth =
  97. shtn.Columns().ColumnWidth =
  98. shtn.Columns().ColumnWidth =
  99. shtn.Columns().ColumnWidth =
  100.  
  101. shtn.Columns().WrapText =true
  102. shtn.Columns().WrapText =true
  103. shtn.Columns().WrapText =true
  104. shtn.Columns().WrapText =true
  105. shtn.Columns().WrapText =true
  106.  
  107. '设置列标题
  108. shtn.cells(, ) = "字段中文名"
  109. shtn.cells(, ) = "字段名"
  110. shtn.cells(, ) = "字段类型"
  111. shtn.cells(, ) = tab.code
  112. shtn.cells(, ) = tab.Name
  113. '设置边框
  114. shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = ""
  115. shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = ""
  116. '设置背景颜色
  117. shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = ""
  118. shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = ""
  119.  
  120. Dim col ' running column
  121. Dim colsNum
  122. Dim rNum
  123. colsNum =
  124. rNum =
  125. for each col in tab.columns
  126. rNum = rNum +
  127. colsNum = colsNum +
  128.  
  129. shtn.cells(rNum+, ) = col.name
  130. shtn.cells(rNum+, ) = col.code
  131. shtn.cells(rNum+, ) = col.datatype
  132. next
  133. shtn.Range(shtn.cells(rNum-colsNum+,),shtn.cells(rNum+,)).Borders.LineStyle = ""
  134. rNum = rNum +
  135.  
  136. Output "FullDescription: " + tab.Name
  137.  
  138. End If
  139. End Sub

代码三:都在一页样式好看

  1. '******************************************************************************
  2. Option Explicit
  3. Dim rowsNum
  4. rowsNum =
  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(-)'添加工作表
  20. EXCEL.workbooks().sheets().name ="表结构"
  21. set SHEET = EXCEL.workbooks().sheets("表结构")
  22.  
  23. EXCEL.workbooks().sheets.add
  24. EXCEL.workbooks().sheets().name ="目录"
  25. set SHEETLIST = EXCEL.workbooks().sheets("目录")
  26. ShowTableList Model,SHEETLIST
  27.  
  28. ShowProperties Model, SHEET,SHEETLIST
  29.  
  30. EXCEL.workbooks().Sheets().Select
  31. EXCEL.visible = true
  32. '设置列宽和自动换行
  33. sheet.Columns().ColumnWidth =
  34. sheet.Columns().ColumnWidth =
  35. sheet.Columns().ColumnWidth =
  36. sheet.Columns().ColumnWidth =
  37. sheet.Columns().ColumnWidth =
  38. sheet.Columns().ColumnWidth =
  39. sheet.Columns().WrapText =true
  40. sheet.Columns().WrapText =true
  41. sheet.Columns().WrapText =true
  42. '不显示网格线
  43. EXCEL.ActiveWindow.DisplayGridlines = False
  44.  
  45. End If
  46. '-----------------------------------------------------------------------------
  47. ' Show properties of tables
  48. '-----------------------------------------------------------------------------
  49. Sub ShowProperties(mdl, sheet,SheetList)
  50. ' Show tables of the current model/package
  51. rowsNum=
  52. beginrow = rowsNum+
  53. Dim rowIndex
  54. rowIndex=
  55. ' For each table
  56. output "begin"
  57. Dim tab
  58. For Each tab In mdl.tables
  59. ShowTable tab,sheet,rowIndex,sheetList
  60. rowIndex = rowIndex +
  61. Next
  62. if mdl.tables.count > then
  63. sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
  64. end if
  65. output "end"
  66. End Sub
  67. '-----------------------------------------------------------------------------
  68. ' Show table properties
  69. '-----------------------------------------------------------------------------
  70. Sub ShowTable(tab, sheet,rowIndex,sheetList)
  71. If IsObject(tab) Then
  72. Dim rangFlag
  73. rowsNum = rowsNum +
  74. ' Show properties
  75. Output "================================"
  76. sheet.cells(rowsNum, ) =tab.name
  77. sheet.cells(rowsNum, ).HorizontalAlignment=
  78. sheet.cells(rowsNum, ) = tab.code
  79. 'sheet.cells(rowsNum, 5).HorizontalAlignment=3
  80. 'sheet.cells(rowsNum, 6) = ""
  81. 'sheet.cells(rowsNum, 7) = "表说明"
  82. sheet.cells(rowsNum, ) = tab.comment
  83. 'sheet.cells(rowsNum, 8).HorizontalAlignment=3
  84. sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Merge
  85. '设置超链接,从目录点击表名去查看表结构
  86. '字段中文名 字段英文名 字段类型 注释 是否主键 是否非空 默认值
  87. sheetList.Hyperlinks.Add sheetList.cells(rowIndex,), "","表结构"&"!B"&rowsNum
  88. rowsNum = rowsNum +
  89. sheet.cells(rowsNum, ) = "字段中文名"
  90. sheet.cells(rowsNum, ) = "字段英文名"
  91. sheet.cells(rowsNum, ) = "字段类型"
  92. sheet.cells(rowsNum, ) = "注释"
  93. sheet.cells(rowsNum, ) = "是否主键"
  94. sheet.cells(rowsNum, ) = "是否非空"
  95. sheet.cells(rowsNum, ) = "默认值"
  96. '设置边框
  97. sheet.Range(sheet.cells(rowsNum-, ),sheet.cells(rowsNum, )).Borders.LineStyle = ""
  98. 'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"
  99. '字体为10
  100. sheet.Range(sheet.cells(rowsNum-, ),sheet.cells(rowsNum, )).Font.Size=
  101. Dim col ' running column
  102. Dim colsNum
  103. colsNum =
  104. for each col in tab.columns
  105. rowsNum = rowsNum +
  106. colsNum = colsNum +
  107. sheet.cells(rowsNum, ) = col.name
  108. 'sheet.cells(rowsNum, 3) = ""
  109. 'sheet.cells(rowsNum, 4) = col.name
  110. sheet.cells(rowsNum, ) = col.code
  111. sheet.cells(rowsNum, ) = col.datatype
  112. sheet.cells(rowsNum, ) = col.comment
  113. If col.Primary = true Then
  114. sheet.cells(rowsNum, ) = "Y"
  115. Else
  116. sheet.cells(rowsNum, ) = " "
  117. End If
  118. If col.Mandatory = true Then
  119. sheet.cells(rowsNum, ) = "Y"
  120. Else
  121. sheet.cells(rowsNum, ) = " "
  122. End If
  123. sheet.cells(rowsNum, ) = col.defaultvalue
  124. next
  125. sheet.Range(sheet.cells(rowsNum-colsNum+,),sheet.cells(rowsNum,)).Borders.LineStyle = ""
  126. 'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3"
  127. sheet.Range(sheet.cells(rowsNum-colsNum+,),sheet.cells(rowsNum,)).Font.Size =
  128. rowsNum = rowsNum +
  129.  
  130. Output "FullDescription: " + tab.Name
  131. End If
  132.  
  133. End Sub
  134. '-----------------------------------------------------------------------------
  135. ' Show List Of Table
  136. '-----------------------------------------------------------------------------
  137. Sub ShowTableList(mdl, SheetList)
  138. ' Show tables of the current model/package
  139. Dim rowsNo
  140. rowsNo=
  141. ' For each table
  142. output "begin"
  143. SheetList.cells(rowsNo, ) = "主题"
  144. SheetList.cells(rowsNo, ) = "表中文名"
  145. SheetList.cells(rowsNo, ) = "表英文名"
  146. SheetList.cells(rowsNo, ) = "表说明"
  147. rowsNo = rowsNo +
  148. SheetList.cells(rowsNo, ) = mdl.name
  149. Dim tab
  150. For Each tab In mdl.tables
  151. If IsObject(tab) Then
  152. rowsNo = rowsNo +
  153. SheetList.cells(rowsNo, ) = ""
  154. SheetList.cells(rowsNo, ) = tab.name
  155. SheetList.cells(rowsNo, ) = tab.code
  156. SheetList.cells(rowsNo, ) = tab.comment
  157. End If
  158. Next
  159. SheetList.Columns().ColumnWidth =
  160. SheetList.Columns().ColumnWidth =
  161. SheetList.Columns().ColumnWidth =
  162. SheetList.Columns().ColumnWidth =
  163. output "end"
  164. End Sub

目录页可以跳转

  1. '******************************************************************************
  2. '* File: Exported_Excel_page.vbs
  3. '* Purpose: 分目录递归,查找当前PDM下所有表,并导出Excel
  4. '* Title:
  5. '* Category:
  6. '* Version: 1.0
  7. '* Author: 787681084@qq.com
  8. '******************************************************************************
  9.  
  10. Option Explicit
  11. ValidationMode = True
  12. InteractiveMode = im_Batch
  13.  
  14. '-----------------------------------------------------------------------------
  15. ' 主函数
  16. '-----------------------------------------------------------------------------
  17. ' 获取当前活动模型
  18. Dim mdl ' 当前的模型
  19. Set mdl = ActiveModel
  20. Dim EXCEL,catalog,sheet,catalogNum,rowsNum,linkNum
  21. rowsNum =
  22. catalogNum =
  23. linkNum =
  24.  
  25. If (mdl Is Nothing) Then
  26. MsgBox "There is no Active Model"
  27. Else
  28. SetCatalog
  29. ListObjects(mdl)
  30. End If
  31.  
  32. '----------------------------------------------------------------------------------------------
  33. ' 子过程,用于扫描当前包并从当前包中打印对象的信息,然后对当前包的所有子包再次调用相同的子过程
  34. '----------------------------------------------------------------------------------------------
  35. Private Sub ListObjects(fldr)
  36. output "Scanning " & fldr.code
  37. Dim obj ' 运行对象
  38. For Each obj In fldr.children
  39. ' 调用子过程来打印对象上的信息
  40. DescribeObject obj
  41. Next
  42. ' 进入子包
  43. Dim f ' 运行文件夹
  44. For Each f In fldr.Packages
  45. '调用子程序扫描子程序包
  46. ListObjects f
  47. Next
  48. End Sub
  49.  
  50. '-----------------------------------------------------------------------------
  51. ' 子过程,用于在输出中打印当前对象的信息
  52. '-----------------------------------------------------------------------------
  53. Private Sub DescribeObject(CurrentObject)
  54. if not CurrentObject.Iskindof(cls_NamedObject) then exit sub
  55. if CurrentObject.Iskindof(cls_Table) then
  56. AddSheet CurrentObject.code
  57. ExportTable CurrentObject, sheet
  58. ExportCatalog CurrentObject
  59. else
  60. output "Found "+CurrentObject.ClassName+" """+CurrentObject.Name+""", Created by "+CurrentObject.Creator+" On "+Cstr(CurrentObject.CreationDate)
  61. End if
  62. End Sub
  63.  
  64. '----------------------------------------------------------------------------------------------
  65. ' 设置Excelsheet
  66. '----------------------------------------------------------------------------------------------
  67. Sub SetExcel()
  68. Set EXCEL= CreateObject("Excel.Application")
  69.  
  70. ' 使Excel通过应用程序对象可见。
  71. EXCEL.Visible = True
  72. EXCEL.workbooks.add(-)'添加工作表
  73. EXCEL.workbooks().sheets().name ="pdm"
  74. set sheet = EXCEL.workbooks().sheets("pdm")
  75.  
  76. ' 将一些文本放在工作表的第一行
  77. sheet.Cells(rowsNum, ).Value = "表名"
  78. sheet.Cells(rowsNum, ).Value = "表中文名"
  79. sheet.Cells(rowsNum, ).Value = "表备注"
  80. sheet.Cells(rowsNum, ).Value = "字段ID"
  81. sheet.Cells(rowsNum, ).Value = "字段名"
  82. sheet.Cells(rowsNum, ).Value = "字段中文名"
  83. sheet.Cells(rowsNum, ).Value = "字段类型"
  84. sheet.Cells(rowsNum, ).Value = "字段备注"
  85. sheet.cells(rowsNum, ).Value = "主键"
  86. sheet.cells(rowsNum, ).Value = "非空"
  87. sheet.cells(rowsNum, ).Value = "默认值"
  88. End Sub
  89.  
  90. '----------------------------------------------------------------------------------------------
  91. ' 导出目录结构
  92. '----------------------------------------------------------------------------------------------
  93. Sub ExportCatalog(tab)
  94. catalogNum = catalogNum +
  95. catalog.cells(catalogNum, ).Value = tab.parent.name
  96. catalog.cells(catalogNum, ).Value = tab.code
  97. catalog.cells(catalogNum, ).Value = tab.comment
  98. '设置超链接
  99. catalog.Hyperlinks.Add catalog.cells(catalogNum,), "",tab.code&"!A2"
  100. End Sub
  101.  
  102. '----------------------------------------------------------------------------------------------
  103. ' 导出sheet
  104. '----------------------------------------------------------------------------------------------
  105. Sub ExportTable(tab, sheet)
  106. Dim col ' 运行列
  107. Dim colsNum
  108. colsNum =
  109. for each col in tab.columns
  110. colsNum = colsNum +
  111. rowsNum = rowsNum +
  112. sheet.Cells(rowsNum, ).Value = tab.code
  113. 'sheet.Cells(rowsNum, 2).Value = tab.name
  114. sheet.Cells(rowsNum, ).Value = tab.comment
  115. 'sheet.Cells(rowsNum, 4).Value = colsNum
  116. sheet.Cells(rowsNum, ).Value = col.code
  117. 'sheet.Cells(rowsNum, 4).Value = col.name
  118. sheet.Cells(rowsNum, ).Value = col.datatype
  119. sheet.Cells(rowsNum, ).Value = col.comment
  120.  
  121. If col.Primary = true Then
  122. sheet.cells(rowsNum, ) = "Y"
  123. Else
  124. sheet.cells(rowsNum, ) = ""
  125. End If
  126. If col.Mandatory = true Then
  127. sheet.cells(rowsNum, ) = "Y"
  128. Else
  129. sheet.cells(rowsNum, ) = ""
  130. End If
  131.  
  132. sheet.cells(rowsNum, ).Value = col.defaultvalue
  133. '设置居中显示
  134. sheet.cells(rowsNum,).HorizontalAlignment =
  135. sheet.cells(rowsNum,).HorizontalAlignment =
  136. next
  137. output "Exported table: "+ +tab.Code+"("+tab.Name+")"
  138. End Sub
  139.  
  140. '----------------------------------------------------------------------------------------------
  141. ' 设置Excel目录页
  142. '----------------------------------------------------------------------------------------------
  143. Sub SetCatalog()
  144. Set EXCEL= CreateObject("Excel.Application")
  145.  
  146. ' 使Excel通过应用程序对象可见。
  147. EXCEL.Visible = True
  148. EXCEL.workbooks.add(-)'添加工作表
  149. EXCEL.workbooks().sheets().name ="表结构"
  150. EXCEL.workbooks().sheets.add
  151. EXCEL.workbooks().sheets().name ="目录"
  152. set catalog = EXCEL.workbooks().sheets("目录")
  153.  
  154. catalog.cells(catalogNum, ) = "模块"
  155. catalog.cells(catalogNum, ) = "表名"
  156. catalog.cells(catalogNum, ) = "表注释"
  157.  
  158. ' 设置列宽和自动换行
  159. catalog.Columns().ColumnWidth =
  160. catalog.Columns().ColumnWidth =
  161. catalog.Columns().ColumnWidth =
  162.  
  163. '设置首行居中显示
  164.  
  165. catalog.Range(catalog.cells(,),catalog.cells(,)).HorizontalAlignment =
  166. '设置首行字体加粗
  167. catalog.Range(catalog.cells(,),catalog.cells(,)).Font.Bold = True
  168. End Sub
  169.  
  170. '----------------------------------------------------------------------------------------------
  171. ' 新增sheet
  172. '----------------------------------------------------------------------------------------------
  173. Sub AddSheet(sheetName)
  174. EXCEL.workbooks().Sheets().Select
  175. EXCEL.workbooks().sheets.add
  176. EXCEL.workbooks().sheets().name = sheetName
  177. set sheet = EXCEL.workbooks().sheets(sheetName)
  178. rowsNum =
  179. '将一些文本放在工作表的第一行
  180. sheet.Cells(rowsNum, ).Value = "表名"
  181. 'sheet.Cells(rowsNum, 2).Value = "表中文名"
  182. sheet.Cells(rowsNum, ).Value = "表备注"
  183. 'sheet.Cells(rowsNum, 4).Value = "字段ID"
  184. sheet.Cells(rowsNum, ).Value = "字段名"
  185. 'sheet.Cells(rowsNum, 4).Value = "字段中文名"
  186. sheet.Cells(rowsNum, ).Value = "字段类型"
  187. sheet.Cells(rowsNum, ).Value = "字段备注"
  188. sheet.cells(rowsNum, ).Value = "主键"
  189. sheet.cells(rowsNum, ).Value = "非空"
  190. sheet.cells(rowsNum, ).Value = "默认值"
  191.  
  192. '设置列宽
  193. sheet.Columns().ColumnWidth =
  194. sheet.Columns().ColumnWidth =
  195. sheet.Columns().ColumnWidth =
  196. sheet.Columns().ColumnWidth =
  197. sheet.Columns().ColumnWidth =
  198. sheet.Columns().ColumnWidth =
  199. sheet.Columns().ColumnWidth =
  200. sheet.Columns().ColumnWidth =
  201.  
  202. '设置首行居中显示
  203. sheet.Range(sheet.cells(,),sheet.cells(,)).HorizontalAlignment =
  204. '设置首行字体加粗
  205. sheet.Range(sheet.cells(,),sheet.cells(,)).Font.Bold = True
  206.  
  207. linkNum = linkNum +
  208. '设置超链接
  209. sheet.Hyperlinks.Add sheet.cells(,), "","目录"&"!B"&linkNum
  210. End Sub

PowerDesigner数据库设计导出到Excel的更多相关文章

  1. PowerDesigner数据库设计PDM基于Excel的导入导出总结

    经常用到pdm来管理代码,一两张表,手写一下还凑合,一旦表多了,就慌了.于是,开始学习用vbs进行Excel的来快速导入导出操作PDM就变得很紧急了,搜罗了网络上的很多vbs脚本,各有各的优点,但对于 ...

  2. Python实现数据库一键导出为Excel表格

    依赖 Python2711 xlwt MySQLdb 数据库相关 连接 获取字段信息 获取数据 Excel基础 workbook sheet 案例 封装 封装之后 测试结果 总结 数据库数据导出为ex ...

  3. PowerDesigner ---- 数据库设计(物理模型CDM和概念模型PDM)

    前言 上一篇介绍了个PowerDesigner工具的安装和汉化,现在我就说一下怎么用这个PowerDesigner建数据库吧.   内容 第一种方法:概念模型转物理模型 1.首先新建模型--选择概念模 ...

  4. Java利用Apache POI将数据库数据导出为excel

    将数据库中的数据导出为excel文件,供其他人查看 public class POITest { public static void main(String[] args) { POITest te ...

  5. Java:将数据库数据导出到Excel (一眼就看会)

    所用Jar包 1. sqljdbc4.jar 连接数据库的Jar包(根据数据库的不同进行选择,我用的SqlServer2008) 2.Jxl.jar 访问Excel的Jar包 注意:支持以.xls结尾 ...

  6. Java实现将Excel导入数据库和从数据库中导出为Excel

    实现的功能: 用Java实现从Excel导入数据库,如果存在就更新 将数据库中的数据导出为Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的 ...

  7. PCB MS SERVER 使用bcp命令将数据库数据导出到Excel

    在前年工程系统与APS系统对接时,需将工程系统数据导出来给APS,采用的正是bcp命令实现,速度超快. 这里将此命令使用方法整理如下: 一.写SQL将表数据导出到Excel @echo "& ...

  8. PowerDesigner数据库设计实用技巧

    欢迎大家补充,谢谢! 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的 ...

  9. mysql数据库表格导出为excel表格

    在本地数据库中操作如下: 由于excel表格的编码是GBK,所以导出时要加一个设置字符编码: select * from 某个表 into outfile 'd:/文件名.xls' CHARACTER ...

随机推荐

  1. Git 工作环境配置

    Git config 简单介绍 Git的配置选项有:-system,-global 和 -local. ① system:系统级别的全局设置,对所有电脑用户生效,文件在/etc/gitconfig: ...

  2. 【javascript】随机颜色

    调用该方法则会返回一个#xxx的rgb随机颜色 function color1(){ var sum=""; var shuzu2=['a','b','c','d','e','f' ...

  3. 利用BLEU进行机器翻译检测(Python-NLTK-BLEU评分方法)

    双语评估替换分数(简称BLEU)是一种对生成语句进行评估的指标.完美匹配的得分为1.0,而完全不匹配则得分为0.0.这种评分标准是为了评估自动机器翻译系统的预测结果而开发的,具备了以下一些优点: 计算 ...

  4. 第一个Python窗口

    import tkinter def my_window(w, h): ws = root1.winfo_screenwidth(); hs = root1.winfo_screenheight(); ...

  5. sql查询语句如何执行

    MySQL 可以分为 Server 层和存储引擎层两部分. 查询缓存: Mysql拿到一个查询请求之后,会先查询缓存,之前执行过的语句及结果可能会以Key-Value的形式被存在缓存中,Key是查询语 ...

  6. 基于JAX-WS的webService开发实例

    最近因为工作原因接触到webService,所以记录下开发中碰到的问题,方便自己以后复习,顺便发扬一下开源精神.刚刚接触webServie如果有什么错误欢迎大家指正. 本地环境:myEclipse10 ...

  7. redis注册为window服务

    打开redis安装路径并执行:redis-server --service-install redis.windows.conf 安装服务命令 执行完命令后打开电脑服务 此时服务还未启动,执行命令:r ...

  8. 小试wsl

    安装 管理员权限运行powershell,执行如下命令: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Su ...

  9. Bugku-CTF之成绩单(快来查查成绩吧)

    Day18 成绩单 快来查查成绩吧http://123.206.87.240:8002/chengjidan/ 本题要点:sql手注.查询基础命令 首先查看一下源码  

  10. nginx+php+mysql+zabbix服务器安装

    好久没有接触监控类的软件了,今天抽空搭建了下 首先系统环境 zabbix-server-1    centos7.2 本次所需的第三方软件包 以下软件包通过官网下载 zabbix-3.0.3.tar. ...