PowerDesigner 用脚本批量导入excel表结构和导出表结构

    在设计功能模块的时候需要设计很多张表结构,前期为了方便整理,使用Excel完成了字段设计,弄好以后想把字段转化为表的时候要一个字段一个字段的粘贴,不太方便,网上搜了一些方案后发现用PowerDesigner导入Excel后可以批量生成表结构和sql,费了一番功夫后终于整出来了,中间也遇到了一些坑,写出来供大家参考

    首先我们设计字段的时候需要使用一个模板,这样后期用脚本的时候可以根据相应的单元格填充对应的内容,模板和脚本我都会放在最后的百度网盘里面供大家下载

      这时候打开我们的PowerDesigner   我用的是16.5版本的,点击左上角导航栏的  文件-->新建模型

选择截图对应的模型 然后选择左侧的目录后 使用ctrl+shift+x快捷键 唤出脚本编辑器

ps:这里会发现字体特别小,我找了好久没办法调大字体,有人知道的话评论区麻烦告知一下,我是绑定第三方编辑器来解决的,选择

下拉框中的Choose Program 选择文本编辑器,我用的是notePad++

 

在这里编辑你要执行的脚本,脚本如下

Option Explicit
dim shet
dim cnt
cnt = 0
For each shet in array("订单表","计划表")  '列出excel文件所有sheet名称,如s1, s2, s3~~~~~~
Dim mdl ' the current model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
    MsgBox "There is no Active Model"
End If
 
Dim HaveExcel
Dim RQ
RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation")
If RQ = vbYes Then
    HaveExcel = True
    ' Open & Create Excel Document
    Dim x1  '
    Set x1 = CreateObject("Excel.Application")
    x1.Workbooks.Open "C:\Users\wangyi\Desktop\表结构整理.xlsx"    '指定excel文档路径
    x1.Workbooks(1).Worksheets(shet).Activate    '指定要打开的sheet名称
Else
    HaveExcel = False
End If
 
a x1, mdl
cnt = cnt + 1
Next
MsgBox "生成数据表结构共计 " + CStr(cnt), vbOK + vbInformation, "表"
 
sub a(x1, mdl)
dim rwIndex
dim tableName
dim colname
dim table
dim col
dim count
dim abc

 
on error Resume Next
'--------------------------------
'下面是读取excel,添加表实体属性
'--------------------------------
For rwIndex = 1 To 150    '指定要遍历的Excel行标  由于第2行是表头,从第1行开始,看你这个表设计多少行
    With x1.Workbooks(1).Worksheets(shet)'需要循环的sheet名称
        If .Cells(rwIndex,1).Value <> "" And  .Cells(rwIndex,2).Value <> "" And .Cells(rwIndex,4).Value = "" Then'Excel中表头的1列是表名,2空,3是表注释
            set table = mdl.Tables.CreateNew '创建一个表实体
            table.Code = .Cells(rwIndex,3).Value'从excel中取得表名称和编码
            table.Name = .Cells(rwIndex,2).Value'
            table.Comment = .Cells(rwIndex,2).Value  '指定列说明
            count = count + 1
            Continue
        End If
      If .Cells(rwIndex,1).Value = "字段名" or .Cells(rwIndex,4).Value = ""  Then '第二列为空的都可以忽略
            continue    '这里忽略空行和表名行、表头行
        Else 
         set col =table.Columns.CreateNew '创建一列/字段
         col.Code = .Cells(rwIndex, 1).Value    '指定列code
         col.DataType = .Cells(rwIndex, 3).Value & "(" & .Cells(rwIndex, 4).Value & ")" '指定列数据类型
         If.Cells(rwIndex, 2).Value = "Y" Then'指定主键
                col.Primary =true
            End If
            col.Name = .Cells(rwIndex, 5).Value    '指定列name            
            col.Comment = .Cells(rwIndex, 5).Value  '指定列说明
        End If
    End With
Next
    'MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表"
 
Exit Sub
End sub

 

在使用的时候需要修改第五行和二十行的值 第五行要改成Excel中要生成的sheet名称,二十行是你的电脑中的这个Excel的目录

检查无误后就可以点击run来生成你想要的表结构了
等待一小会后 会弹出生成成功了几张表结构,然后左边多出一个目录

这就是咱们想要的表结构了,右键点击对应的表结构名称里面会有sql预览,点击后复制出来就是咱们想要的sql了

这里面有一个小坑,datetime一定要设置字段长度 ,生成sql以后再把datetime后面带的长度去掉

 

还有一个需求就是我生成以后产品想要一个关于这个表结构的Excel目录和详细信息

这时候就需要一个导出所有表结构的脚本了,网盘里面有把所有的表结构导出成一个Excel的脚本,分享给大家

如果有什么问题欢迎在评论区提出

https://pan.baidu.com/s/18ZpQGesKJAARjZj4C4IzaQ   提取码 k4ms

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值