跟我一起学【Powerdesigner】之——导入EXCEL生成逻辑模型

表结构如图:

中文表名英文表名字段编码字段名称字段注释字段类型是否主键是否可空主键是否自增
user1用户信息表1idididint(10)YYY
user1用户信息表1name用户名用户名varchar(100)NY 
user1用户信息表1password密码密码varchar(100)NY 
user2用户信息表2idididint(10)YY 
user2用户信息表2name用户名用户名varchar(100)NY 
user2用户信息表2password密码密码varchar(100)NY 
user3用户信息表3idididint(10)YY 
user3用户信息表3name用户名用户名varchar(100)NY 
user3用户信息表3password密码密码varchar(100)NY 

直接上代码:

Option Explicit

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
Dim x1sApp,xlsWorkBook,xlsSheet
RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation")
If RQ = vbYes Then
    HaveExcel = True
    ' Open & Create Excel Document

    Set x1sApp = CreateObject("Excel.Application")
    set xlsWorkBook = x1sApp.Workbooks.Open("D:\123\总结测试3.xls")   '指定excel文档路径
    set xlsSheet = x1sApp.Workbooks(1).Worksheets("sheet1")   '指定要打开的sheet名称
Else
    HaveExcel = False
End If

a x1sApp, mdl,x1sApp,xlsWorkBook,xlsSheet

sub a(x1, mdl,x1sApp,xlsWorkBook,xlsSheet)

    dim rwIndex
    dim tableName
    dim colname
    dim table
    dim col
    dim count
    dim rowCount
    tableName = ""
    rowCount = xlsSheet.usedRange.Rows.Count

    on error Resume Next

    For rwIndex = 2 To rowCount   '指定要遍历的Excel行标  由于第1行是表头,从第2行开始
        With xlsSheet
            If .Cells(rwIndex, 2).Value = "" Then '如果遍历到第2列为空,则退出
                Exit For
            End If
            If tableName <> .Cells(rwIndex,2) Then '如果表名不同,则表示新建表
                set table = mdl.Tables.CreateNew     '创建表
                table.Name = lcase(.Cells(rwIndex , 2).Value) '指定表名,第2列的值
                table.Code = .Cells(rwIndex , 2).Value
                count = count + 1
                tableName = .Cells(rwIndex,2) '获取表名
            end if

            set col = table.Columns.CreateNew   '创建一列/字段
            'MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"

            if .Cells(rwIndex,4).Value  = "" then    '指定列名,如果备注不为空,则用备注信息,否则用code的全小写信息
                col.Name = lcase(.Cells(rwIndex, 3).Value)   
            else
                col.Name = .Cells(rwIndex,4).Value
            end if
            'MsgBox col.Name, vbOK + vbInformation, "列"
            col.Code = .Cells(rwIndex, 3).Value   '指定列编码
            col.DataType = .Cells(rwIndex, 6).Value '指定列数据类型
            'MsgBox col.DataType, vbOK + vbInformation, "列类型"
            col.Comment = .Cells(rwIndex,5).Value  '指定列说明

            if .Cells(rwIndex, 7).Value = "Y" Then    '设置主键信息,Y为主键
                col.Primary = true
            End If

            if .Cells(rwIndex, 9).Value = "Y" Then    '设置主键自增长,Y为自增
                col.Identity = true
            End If
            
            If.Cells(rwIndex, 8).Value = "N" Then    '设置非空属性,N为非空
                col.Mandatory =true
            End If
        End With
    Next

    MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表"

    xlsWorkBook.Close
    x1sApp.Quit

    set x1sApp = nothing
    set xlsWorkBook = nothing

    Exit Sub

End sub

结果截图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值