PowerDesiginer导入表结构excel
从Excel中设计好表结构导入到PowerDesiginer。
1、编写Excel模板(模板和后面的脚本需要一致)
2、打开PowerDesigner,创建物理模型(Physical Data Model)
3、在PowerDesigner菜单栏中,依次点击“Tools ->Excute Commands->Edit/Run Script..”
'****************************************************************************** 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:\Temp\1.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 300 step 1 '指定要遍历的Excel行标 由于第2行是表头,从第1行开始,看你这个表设计多少行 With x1.Workbooks(1).Worksheets("Sheet1")'需要循环的sheet名称 'If .Cells(rwIndex, 1).Value = "" Then 'Exit For ' End If 'If .Cells(rwIndex,1).Value = "表" Then 'And .Cells(rwIndex,2).Value <> "" And .Cells(rwIndex,3).Value <> "" Then'Excel中表头的1列是表名,2表名中文,3是表注释 If rwIndex = 1 then '第一行取表信息 set table = mdl.Tables.CreateNew '创建一个表实体 table.Code = .Cells(rwIndex,2).Value'从excel中取得表名称和编码 table.Name = .Cells(rwIndex,3).Value' table.Comment = .Cells(rwIndex,4).Value '指定列说明 'count = count + 1 Continue End If If .Cells(rwIndex,1).Value = "" or .Cells(rwIndex,1).Value = "字段" Then '第1列为空的都可以忽略 Continue '这里忽略空行和表名行、表头行 Else set col =table.Columns.CreateNew '创建一列/字段 col.Code = .Cells(rwIndex, 1).Value '指定列code col.DataType = .Cells(rwIndex, 2).Value '指定列数据类型 If.Cells(rwIndex, 3).Value = "Y" Then'指定主键 col.Primary =true End If If.Cells(rwIndex, 4).Value = "N" Then'指定列是否可空 true 为不可空 col.Mandatory =true End If col.Name = .Cells(rwIndex, 5).Value '指定列name col.Comment = .Cells(rwIndex, 6).Value '指定列说明 count = count + 1 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 End With Next MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表" Exit Sub End sub
4、运行脚本
5、检查表进行微调整