power Designer 导入 excel 表结构数据 创建表

时间秒杀一切 提交于 2020-02-27 00:26:53
一、编写测试excel,如下:

excel模板

二、打开PowerDesigner,创建物理模型(Physical Data Model)
三、在PowerDesigner菜单栏中,依次点击“Tools ->Excute Commands->Edit/Run Script..
四、修改如下脚本,指定excel所在路径及文件名:
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("J:\user.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
 
     rowCount = xlsSheet.usedRange.Rows.Count
 
    on error Resume Next  
 
    For rwIndex = 1 To rowCount   '指定要遍历的Excel行标  从第1行开始  
            With xlsSheet
                If .Cells(rwIndex, 2).Value = "" Then '如果遍历到第二列为空,则退出  
                   Exit For  
                End If
				
                If .Cells(rwIndex, 3).Value = "" Then '如果遍历到第三列为空,则此行为表名  
                   set table = mdl.Tables.CreateNew     '创建表  
                    table.Name = .Cells(rwIndex , 1).Value '指定表名,第二列的值  
                    table.Code = .Cells(rwIndex , 2).Value   
                    table.Comment = .Cells(rwIndex , 1).Value '指定表注释,第一列的值  
                    count = count + 1  
					'跳过表名下面的表头
					rwIndex = rwIndex + 1
					
                Else  
                   set col = table.Columns.CreateNew   '创建一列/字段  
                   'MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"              
                   col.Name = .Cells(rwIndex, 1).Value   '指定列名         
                   'MsgBox col.Name, vbOK + vbInformation, "列"  
                   col.Code = .Cells(rwIndex, 2).Value   '指定列名                          
                   col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型             
                     'MsgBox col.DataType, vbOK + vbInformation, "列类型"                 
                   col.Comment = .Cells(rwIndex, 7).Value  '指定列说明  
 
					'如果主键列值为PK则设置该列为主键
                    If .Cells(rwIndex, 4).Value = "PK" Then                   
                         col.Primary = true                  
                    End If
					'如果默认值列不为空,则设置默认值
					If .Cells(rwIndex, 5).Value <> "" Then                   
                         col.DefaultValue = .Cells(rwIndex, 5).Value            
                    End If
					'如果非空列值为NOTNULL则设置该列为非空
                    If .Cells(rwIndex, 6).Value = "NOTNULL" Then                   
                        col.Mandatory =true                  
                    End If
 
					
                End If    
 
 
 
            End With  
 
    Next  
    MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表"  
    xlsWorkBook.Close
    x1sApp.Quit
    set x1sApp = nothing
    set xlsWorkBook = nothing
 
    Exit Sub  
    End Sub
五、点击Run按钮,生成结果如下:

生成成功生成的用户表

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!