利用脚本将EXCEl表倒入PowerDesigner中
1.Excel表格样式
2.脚本代码
'****************************************************************************** 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 "e:\123.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 dim abc on error Resume Next '-------------------------------- '下面是读取excel,添加表实体属性 '-------------------------------- For rwIndex = 1 To 50 '指定要遍历的Excel行标 由于第2行是表头,从第1行开始,看你这个表设计多少行 With x1.Workbooks(1).Worksheets("Sheet1")'需要循环的sheet名称 If .Cells(rwIndex,1).Value <> "" And .Cells(rwIndex,2).Value = "" And .Cells(rwIndex,3).Value <> "" Then'Excel中表头的1列是表名,2空,3是表注释 set table = mdl.Tables.CreateNew '创建一个表实体 table.Code = .Cells(rwIndex,1).Value'从excel中取得表名称和编码 table.Name = .Cells(rwIndex,3).Value' table.Comment = .Cells(rwIndex,3).Value '指定列说明 count = count + 1 Continue End If 'If (.Cells(rwIndex,1).Value = "" And .Cells(rwIndex,2).Value = "" And .Cells(rwIndex,3).Value = "") Or (.Cells(rwIndex,1).Value <> "" And .Cells(rwIndex,2).Value = "" And .Cells(rwIndex,3).Value <> "")Then If .Cells(rwIndex,2).Value = "" or .Cells(rwIndex,1).Value = "序号" Then '第二列为空的都可以忽略 continue '这里忽略空行和表名行、表头行 Else set col =table.Columns.CreateNew '创建一列/字段 col.Code=.Cells(rwIndex, 2).Value If .Cells(rwIndex,5).Value ="datetime" Then col.DataType = .Cells(rwIndex, 5).Value '指定列数据类型 ElseIf .Cells(rwIndex,5).Value ="numeric" Then col.DataType =CStr(.Cells(rwIndex, 5).Value) + "("+ CStr(.Cells(rwIndex, 6).Value)+","+CStr(.Cells(rwIndex, 7).Value)+ ")" Else col.DataType =CStr(.Cells(rwIndex, 5).Value) + "("+ CStr(.Cells(rwIndex, 6).Value)+ ")" End If If.Cells(rwIndex, 4).Value = "√" Then'指定主键 col.Primary =true End If If.Cells(rwIndex, 8).Value <> "√" Then'指定列是否可空 true 为不可空 col.Mandatory =true Else col.Mandatory =false End If If .Cells(rwIndex, 9).Value <> "" Then '默认值赋值 col.defaultValueDisplayed =.Cells(rwIndex, 9).Value End If col.Name = .Cells(rwIndex, 10).Value '指定列name col.Comment = .Cells(rwIndex, 10).Value '指定列说明 End If End With Next MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表" Exit Sub End sub
这俩步就可以将Excel中的内容导入到PowerDesigner中,如果有默认值且为字符串类型的时候,生成的默认值存在''的问题,可采用以下方法解决: