powerdesigner中数据结构转化为excel文档

之前在设计数据库的时候使用powerdesigner,但是为了方便给团队人员查阅(有些人不喜欢用powerdesigner,比如我们公司的几个产品经理...),在网上找到了一些执行脚本,根据脚本修改成自己喜欢的风格,如下:


在powerdesigner中快捷键shift+ctrl+X,打开脚本运行,脚本如下:


'* 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:   wupeng


'* Created:  2012-05-03


'* 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, SHEET


 set EXCEL = CREATEOBJECT("Excel.Application")


 EXCEL.workbooks.add(-4167)'添加工作表


 EXCEL.workbooks(1).sheets(1).name ="数据库表结构"


 set sheet = EXCEL.workbooks(1).sheets("数据库表结构")


 


 ShowProperties Model, SHEET


 EXCEL.visible = true


 '设置列宽和自动换行


 sheet.Columns(1).ColumnWidth = 20 


 sheet.Columns(2).ColumnWidth = 20 


 sheet.Columns(3).ColumnWidth = 20 
 
 sheet.Columns(4).ColumnWidth = 40


 sheet.Columns(1).WrapText =true


 sheet.Columns(2).WrapText =true


 sheet.Columns(3).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) = 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.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 2)).Borders.LineStyle = "1"


      sheet.Range(sheet.cells(rowsNum-1, 3),sheet.cells(rowsNum, 4)).Borders.LineStyle = "1"


Dim col ' running column


Dim colsNum


colsNum = 0


      for each col in tab.columns


        rowsNum = rowsNum + 1


        colsNum = colsNum + 1


      sheet.cells(rowsNum, 1) = col.name


      sheet.cells(rowsNum, 2) = col.code


      sheet.cells(rowsNum, 3) = col.datatype
      
      sheet.cells(rowsNum, 4) = col.comment


      next


      sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,2)).Borders.LineStyle = "2"       
      
      sheet.Range(sheet.cells(rowsNum-colsNum+1,3),sheet.cells(rowsNum,4)).Borders.LineStyle = "2"  


      rowsNum = rowsNum + 1


      Output "FullDescription: "       + tab.Name


   End If


End Sub


有两点不足,望有心人士回复指点:

1.我想给每张表首行加背景色,不知道怎么设置?

2.如何将每张表创建一个sheet?



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值