powerdesigner的导入excel插件

插件的code是参考网上代码的(抄过来改了一两行)

'导入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 
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 "D:/test.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 '创建一个表实体
'table.Name = "xxx表" '指定表名,如果在Excel文档里有,也可以通过.Cells(rwIndex, 1).Value指定
'table.Code = "xxx"   '指定表Code,如果在Excel文档里有,也可以通过.Cells(rwIndex, 2).Value指定
'count = count + 1
For rwIndex = 2 To 200 step 1 '指定要遍历的Excel行标
        With x1.Workbooks(1).Worksheets("Sheet1")             
            If .Cells(rwIndex, 1).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                
               count = count + 1             
            Else 
               'colName = .Cells(rwIndex, 1).Value               
               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 '指定列code
                                    
               col.Comment = .Cells(rwIndex,1).Value '指定列说明    
                           
               col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型
               
               If .Cells(rwIndex, 4).Value = "否" Then
                  col.Mandatory = true'指定列是否可空,true为不可空                  
               End If
               
            End If        
        End With 
Next

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

Exit Sub 
End Sub

可以把表结构整理成如下的excel表格,命名成test.xlsx,放在d盘根目录,然后在PD上创建物理模型,执行上面的脚本导入即可。

下面的表格:

1. 第一行是各列介绍,不会被导入

2. 黄色的两格,分别是实体名和物理表名

3. 必须填充的是字段名、字段code、字段类型

4. 其他列可自行增加,目的是为了excel更可读

字段名 字段code 字段类型   字段处理描述     类目 标识符 数据元名称 说明
测试表 testtable                  
整形列 col_int int   测试            
字符型列 col_char char(10)   测试            
浮点型列 col_double double   测试            
日期列 col_date date   测试            
时间列 col_datetime datetime   测试            
二进制列 col_binary binary(1024)   测试            
登记信息 登记信息                  
姓名 姓名 char(30)   二期高价值            
曾用名 曾用名 char(30)   二期高价值            
性别 性别 char(2)   二期高价值            
民族 民族 char(2)   二期高价值            
身份证件类型 身份证件类型 char(2)   二期高价值            
身份证号码 身份证号码 char(18)   二期高价值            
政治面貌 政治面貌 char(2)                
出生地 出生地 char(50)                
出生日期 出生日期 date   二期高价值            
国籍 国籍 char(10)                
照片 照片 binary(1024)                
宗教信仰 宗教信仰 char(10)                
兵役状况 兵役状况 char(2)                
健康状况 健康状况 char(2)   二期高价值            

猜你喜欢

转载自blog.csdn.net/micklf/article/details/82977072