版权声明:本文为博主原创文章,转载请注明出处;

网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以实现;

先看下效果图:

1.首先这个是PowerDesign待导出的文件

2.执行脚本后导出的Excel截图

3.后期规划导出效果图(因为支持了VBA,所以都是可以实现的):

一切以代码为主,处理思路是,先读取所有的Tables 循环遍历,得到单表对象,然后就可以拿到相关属性了,字段名,code,字段类型等,当然PowerDesign请按照官方格式填满哦

看代码哈

'******************************************************************************
'* 我的淘宝店: 52sunan.taobao.com
'* 我的网站: www.52sunan.com
'* Created:
'* Version: 1.0
'******************************************************************************
Option Explicit
Dim rowsNum
rowsNum = 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().sheets()
sheet.name ="数据字典" sheet.Range(sheet.cells(, ),sheet.cells(, )).Merge
sheet.cells(, ) ="淘宝服装店地址:http://52sunan.taobao.com"
sheet.Range(sheet.cells(, ),sheet.cells(, )).Interior.Color=rgb(,,) rowsNum=
beginrow = rowsNum+ Dim tab
For Each tab In Model.tables
TableLoop tab,SHEET
Next EXCEL.visible = true
'设置列宽和自动换行
sheet.Columns().ColumnWidth =
sheet.Columns().ColumnWidth =
sheet.Columns().ColumnWidth =
sheet.Columns().ColumnWidth =
sheet.Columns().ColumnWidth = 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 + sheet.cells(rowsNum, ) = "表名"
sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Merge
sheet.cells(rowsNum, )=tab.code
sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Borders.LineStyle = ""
sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Interior.Color=rgb(,,)
sheet.Range(sheet.cells(rowsNum, ),sheet.cells(rowsNum, )).Borders.Weight ="" rowsNum = rowsNum +
sheet.cells(rowsNum, ) = "中文名"
sheet.cells(rowsNum, ) = "字段名"
sheet.cells(rowsNum, ) = "类型"
sheet.cells(rowsNum, ) = "长度"
sheet.cells(rowsNum, ) = "主键"
sheet.cells(rowsNum, ) = "索引"
sheet.cells(rowsNum, ) = "不可空"
sheet.cells(rowsNum, ) = "默认值"
sheet.cells(rowsNum, ) = "说明"
sheet.Range(sheet.cells(rowsNum,),sheet.cells(rowsNum,)).Interior.Color=rgb(,,) Dim col ' running column
Dim colsNum
colsNum =
for each col in tab.columns
rowsNum = rowsNum +
colsNum = colsNum +
sheet.cells(rowsNum, ) = col.name
sheet.cells(rowsNum, ) = col.code
sheet.cells(rowsNum, ) = col.datatype
sheet.cells(rowsNum, ) = IIF(col.Length<>,col.Length,"")
sheet.cells(rowsNum, ) = IIF(col.Primary,"√","")
sheet.cells(rowsNum, ) = IIF(col.Primary,"√","")
sheet.cells(rowsNum, ) = IIF(col.Mandatory,"√","")
sheet.cells(rowsNum, ) = "无"
sheet.cells(rowsNum, ) = col.comment
next '设置边框
DIM RanagBorder
SET RanagBorder =sheet.Range(sheet.cells(rowsNum-colsNum,),sheet.cells(rowsNum,))
RanagBorder.Borders.LineStyle = ""
'RaneBorderFun RanagBorder rowsNum = rowsNum + End If
End Sub function IIF(flg,tstr,fstr)
if flg then
IIF= tstr
else
IIF= fstr
end if
End function

http://www.52sunan.com 我平时搞的一个小网页

执行方法:Tools -> Execute COmmands -> Edit/Run Script 或者用快捷键也可以:ctr+shift+X

里面有一个小问题,我还没能获取到字段的默认值属性,用Default结果是关键字 使用不了,我正在研究中,向着最终文档方向发展,希望大家多多支持与交流~

这里的技术主要是VBA,只要可以拿到VBA的地方就可以很容易操作Excel了,而Excel作为存档文件的一个重要文件格式,平时偶尔会遇到整理数据字典,和其他公司联协等,所以构建一些良好的文档还是很必要的。

学好VBA,发现Excel 又变得继续强大强大了。。。

以上涉及到的资料请见附件:附件PowerDesignToExcelFile

Powerdesigner 导出Excel格式数据字典 导出Excel格式文件的更多相关文章

  1. php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法

    而关于php的也有,但是大多都是用phpExcel导出的方法或者spreadsheet等类或者控件之类的导出方法,而我所在维护的系统却用很简单的方法,如下,网上很少有讲如何设置要导出数据的EXcel格 ...

  2. asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台

    分享: 腾讯微博  新浪微博   搜狐微博   网易微博  腾讯朋友  百度贴吧  豆瓣   QQ好友  人人网 作者:王春天  原文地址:http://www.cnblogs.com/spring_ ...

  3. 利用freemarker导出页面格式复杂的excel

    刚开始大家可能会利用poi生成简单的excel,但是遇到需要生成复杂的excel,poi导出excel就比较困难,这时候可以利用freemarker来渲染实现实现生成复杂的excel, 首先,将exc ...

  4. Excel导出时设置单元格的格式为文本

    问题: 用excel导出数据时,如何设置单元格格式的数字分类为"文本",默认是"常规"? 比如:导出编码0235A089,在Excel查看默认显示的是没有前面的 ...

  5. C#导出Excel,并设置简单格式

    protected void ExportExcel(DataTable dt) { string fileName = “FileName”; Microsoft.Office.Interop.Ex ...

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

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

  7. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  9. ASP.NET使用NPOI加载Excel模板并导出下载

    1.为什么要使用NPOI导出Excel? 一.解决传统操作Excel遇到的问题: 如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导 ...

随机推荐

  1. html5外包—长年承接html5外包业务:《Sencha Touch权威指南》下载

    <Sencha Touch权威指南>内容简介:如何才能全面而透彻地理解和掌握移动应用开发框架Sencha Touch并开发出令人心动的移动应用?<Sencha Touch权威指南&g ...

  2. (转)JS保留两位小数 四舍五入函数

    本文转载自:http://www.cnblogs.com/446557021/archive/2011/10/13/2211047.html js 四舍五入函数 toFixed(),里面的参数 就是保 ...

  3. linux下mongodb定时备份指定的集合

    目标:把一台linux机上mongodb的数据定时备份到另一台机上: 过程: 一开始打算使用mongoexport和mongoimport,但是总是会报“\x00”字符串不能识别的问题,后来就改成了m ...

  4. java处理日期时间

    java.util.Calendar Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作 ...

  5. ClassLoader 机制

    JAVA启动后,是经过JVM各级ClassLoader来加载各个类到内存.为了更加了解加载过程,我通过分析和写了一个简单的ClassLoader来粗浅的分析它的原理. JVM的ClassLoader分 ...

  6. POJ 1269 Intersecting Lines(计算几何)

    题意:给定4个点的坐标,前2个点是一条线,后2个点是另一条线,求这两条线的关系,如果相交,就输出交点. 题解:先判断是否共线,我用的是叉积的性质,用了2遍就可以判断4个点是否共线了,在用斜率判断是否平 ...

  7. 第一个Flask Web

    https://github.com/ethan-funny/head-first-flask iOS多线程技术方案 http://www.cnblogs.com/Erma-king/p/593427 ...

  8. TFS使用中的问题

    http://msdn.microsoft.com/zh-cn/library/vstudio/fda2bad5.aspx 项目映射步骤(项目上传): a.新建一个空的文件夹Team Server,用 ...

  9. mysql事务与mysql储存引擎

    事务概念及存储引擎 1.0 为何要事务? 先来看一个场景,银行转账汇款: 李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元 设计如下表 account表 编号(id)用户名(user)金额 ...

  10. Linux磁盘系统基础知识(转载)

    From:http://www.liusuping.com/ubuntu-linux/linux-disk-basic.html 在Linux系统下对于IDE硬盘,每块盘有一个设备名:对应于主板的四个 ...