zoukankan      html  css  js  c++  java
  • excel表格定义导入到powerdesigner脚本

    打开powerdesigner,shift + ctrl + X 打开脚本窗口
    输入执行的脚本,点 run 即可。
    简单的导入Excel脚本

    '开始
    Option Explicit
    Dim mdl ' the current model
    Set mdl = ActiveModel
    MsgBox "当前活动的CDM名称是"+mdl, vbOK + vbInformation, "表"
    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 "E:工作文档新系统数据字典系统数据字典-1.33 Surface 面签表.xlsx"   '指定excel文档路径
       x1.Workbooks(1).Worksheets("Sheet1").Activate   '指定要打开的sheet名称
    Else
       HaveExcel = False
    End If
    a x1, mdl
    sub a(x1, mdl)
    dim rwIndex   
    dim tableName
    dim colname
    dim table
    dim col
    dim count
    'on error Resume Next
    'set table = mdl.Tables.CreateNew '创建一个表实体
    'tableName= .Cells(1, 1).Value   '"customer"                      '.Cells(1,1).Value
    'table.Name = .Cells(1, 1).Value   '指定表名,如果在Excel文档里有,也可以 .Cells(rwIndex, 3).Value 这样指定
    'table.Code = .Cells(1, 2).Value  '指定表名

    For rwIndex = 1 To 1000   '指定要遍历的Excel行标  由于第1行是表头,从第2行开始
            With x1.Workbooks(1).Worksheets("Sheet1")
                If .Cells(rwIndex, 1).Value = "" Then
                   Exit For
                End If
                if rwIndex=1 Then
                  set table = mdl.tables.CreateNew() '创建一个表实体
                  tableName= .Cells(rwIndex, 1).Value   '"customer"                      '.Cells(1,1).Value
                  table.Name = tableName   '指定表名,如果在Excel文档里有,也可以 .Cells(rwIndex, 3).Value 这样指定
                  table.comment= .Cells(rwIndex, 1).Value '给的给表添加备注
                  table.Code = .Cells(rwIndex, 2).Value  '指定表名   
                  MsgBox "获取表格中的表名"+table.Name  + CStr(count), vbOK + vbInformation, "表"
                else if rwIndex=2 Then
                    else
                   'MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"
                  ' If .Cells(rwIndex, 3).Value = "" Then
                    '  col.Name = .Cells(rwIndex, 1).Value   '指定列名
                  ' Else 
                   '   col.Name = .Cells(rwIndex, 3).Value
                  ' End If
                   'MsgBox col.Name, vbOK + vbInformation, "列"
                   set col = table.columns.CreateNew   '创建一列/字段
                   col.Code = .Cells(rwIndex, 1).Value   '指定列名
                   colName = .Cells(rwIndex, 1).Value
                   col.Name = .Cells(rwIndex, 1).Value 
                   col.DataType = .Cells(rwIndex, 2).Value   '指定列数据类型
                   col.Comment = .Cells(rwIndex, 5).Value  '指定列说明  
                   If .Cells(rwIndex, 4).Value = "N" Then
                       col.Mandatory = true        '指定列是否可空  true  为不可空                  
                   End If
                   if .Cells(rwIndex, 5).Value <>"" then
                       'col.defaults=.Cells(rwIndex, 5).Value
                   end if
                   'If rwIndex = 2 Then
                      ' col.Primary = true    '指定主键
                  ' End If
                   count = count + 1
                 End If
                 End If
            End With
    Next
    MsgBox col.Name + "表总共列数有 " + CStr(count), vbOK + vbInformation, "表"
    Exit Sub
    End sub

  • 相关阅读:
    redis深度理解底层锁原理
    深度完整的了解MySQL锁
    今天的文章很不一般
    利用h5来进行定位当前位置
    workerman(环境+初识)
    Nginx(防止压力测试的恶意攻击)
    Java Web框架——自己动手实现一个简化版的Spring IOC框架
    设计模式——策略模式
    数据库——深入理解MySQL事务
    缓存——Redis和Memcache的对比
  • 原文地址:https://www.cnblogs.com/zzjhn/p/9519976.html
Copyright © 2011-2022 走看看