Powerdesigner 导出Excel格式数据字典 导出Excel格式文件
版权声明:本文为博主原创文章,转载请注明出处;
网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以实现;
先看下效果图:
1.首先这个是PowerDesign待导出的文件
2.执行脚本后导出的Excel截图
3.后期规划导出效果图(因为支持了VBA,所以都是可以实现的):
一切以代码为主,处理思路是,先读取所有的Tables 循环遍历,得到单表对象,然后就可以拿到相关属性了,字段名,code,字段类型等,当然PowerDesign请按照官方格式填满哦
看代码哈
'****************************************************************************** '* Created: '* Version: 1.0 '****************************************************************************** Option Explicit Dim rowsNum rowsNum = 2 Dim Model Set Model = ActiveModel If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then Debug.print "null" Else ' Get the tables collection '创建EXCEL APP dim beginrow DIM EXCEL, SHEET set EXCEL = CREATEOBJECT("Excel.Application") EXCEL.workbooks.add '添加工作表 SET sheet = EXCEL.workbooks(1).sheets(1) sheet.name ="数据字典" sheet.Range(sheet.cells(1, 1),sheet.cells(1, 9)).Merge sheet.cells(1, 1) ="hello world" sheet.Range(sheet.cells(1, 1),sheet.cells(1, 9)).Interior.Color=rgb(146,208,80) rowsNum=2 beginrow = rowsNum+1 Dim tab For Each tab In Model.tables TableLoop tab,SHEET Next EXCEL.visible = true '设置列宽和自动换行 sheet.Columns(1).ColumnWidth =10 sheet.Columns(2).ColumnWidth =15 sheet.Columns(4).ColumnWidth =20 sheet.Columns(5).ColumnWidth =15 sheet.Columns(6).ColumnWidth =15 sheet.Columns("C:C").EntireColumn.AutoFit sheet.Columns("i:i").EntireColumn.AutoFit End If Sub TableLoop(tab, sheet) If IsObject(tab) Then Dim rangFlag rowsNum = rowsNum + 1 sheet.cells(rowsNum, 1) = "表名" sheet.Range(sheet.cells(rowsNum, 2),sheet.cells(rowsNum, 9)).Merge sheet.cells(rowsNum, 2)=tab.code sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1" sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 9)).Interior.Color=rgb(141,180,226) sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 9)).Borders.Weight ="3" rowsNum = rowsNum + 2 sheet.cells(rowsNum, 1) = "中文名" sheet.cells(rowsNum, 2) = "字段名" sheet.cells(rowsNum, 3) = "类型" sheet.cells(rowsNum, 4) = "长度" sheet.cells(rowsNum, 5) = "主键" sheet.cells(rowsNum, 6) = "索引" sheet.cells(rowsNum, 7) = "不可空" sheet.cells(rowsNum, 8) = "默认值" sheet.cells(rowsNum, 9) = "说明" sheet.Range(sheet.cells(rowsNum,1),sheet.cells(rowsNum,9)).Interior.Color=rgb(166,166,166) 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) = IIF(col.Length<>0,col.Length,"") sheet.cells(rowsNum, 5) = IIF(col.Primary,"√","") sheet.cells(rowsNum, 6) = IIF(col.Primary,"√","") sheet.cells(rowsNum, 7) = IIF(col.Mandatory,"√","") sheet.cells(rowsNum, 8) = "无" sheet.cells(rowsNum, 9) = col.comment next '设置边框 DIM RanagBorder SET RanagBorder =sheet.Range(sheet.cells(rowsNum-colsNum,1),sheet.cells(rowsNum,9)) RanagBorder.Borders.LineStyle = "1" 'RaneBorderFun RanagBorder rowsNum = rowsNum + 1 End If End Sub function IIF(flg,tstr,fstr) if flg then IIF= tstr else IIF= fstr end if End function
执行方法:Tools -> Execute COmmands -> Edit/Run Script 或者用快捷键也可以:ctr+shift+X
以上涉及到的资料请见附件:附件PowerDesignToExcelFile
标签:
PowerDesign
, VBA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南