欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PowerDesigner导入Excel模板生成实体-多sheet页支持

程序员文章站 2022-07-13 12:58:27
...

在Excel里整理好的表模型数据,可直接导入PowerDesigner。

此功能通过PowerDesigner的脚本功能来实现,使用起来也简单。具体操作方法:

打开PowerDesigner,新建模型,点击Tools|Execute Commands|Edit/Run Script菜单或按下快捷键Ctrl + Shift + X打开脚本窗口,输入示例VBScript脚本,修改其中的Excel模板路径及工作薄页签,点Run按钮执行即可。

本文提供脚本支持EXCEL格式如下:

支持多sheet导入

PowerDesigner导入Excel模板生成实体-多sheet页支持
PowerDesigner导入Excel模板生成实体-多sheet页支持

示例VBScript脚本如下:

'导入Excel表结构
'开始
Option Explicit

Dim mdl ' the current model
Set mdl = ActiveModel
dim sheet

If (mdl Is Nothing) Then
   MsgBox "There is no Active Model"
End If

Dim HaveExcel
Dim RQ
RQ = vbYes 
If RQ = vbYes Then
   HaveExcel = True

   ' Open & Create Excel Document
   Dim x1  '
   Set x1 = CreateObject("Excel.Application")
   x1.Workbooks.Open "C:\Users\lily\Desktop\1.xlsx"    '指定excel文档路径
  ' x1.Workbooks(1).Worksheets(sheet).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 Sht

'循环所有sheet页
For Each Sht In x1.Worksheets
    If Sht.Name = "sheet1"  Then
    '第一页为目录  按需特殊处理
    Else
    '逐步 遍历指定行数
        For rwIndex = 1 To 25 step 1 '指定要遍历的Excel行标
            With Sht
            If rwIndex = 2 Then
             '第二行为字段名 特殊处理
            Else
            '第一行为表 中文名 CODE
                If  rwIndex  =1 Then '指定表名
                   set table = mdl.Tables.CreateNew
                   table.Name = .Cells(rwIndex , 1).Value
                   table.Code = .Cells(rwIndex , 2).Value
            
                Else
                    If  .Cells(rwIndex, 1)  =""Then
                     '跳过没有中文列名字段
                    Else
                        set col = table.Columns.CreateNew '创建列
            
                        If  .Cells(rwIndex, 1).Value <>"" Then
                        col.Name = .Cells(rwIndex, 1).Value '指定列名
                        End If
            
                        If .Cells(rwIndex, 1).Value ="id" Then
                          col.Primary = true        '指定主键
                        End If
            
                        If  .Cells(rwIndex, 2).Value <>"" Then
                            col.Code = .Cells(rwIndex, 2).Value '指定列code
                        End If
            
                        If  .Cells(rwIndex, 6).Value <>"" Then
                            col.Comment = .Cells(rwIndex,6).Value '指定列说明
                        End If
            
                        If  .Cells(rwIndex, 3).Value <>"" Then
                            col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型
                        End If
            
                        If .Cells(rwIndex, 7).Va    lue = "1" Then
                          col.Mandatory = true  '指定列是否可空,true为不可空
                        End If
                    End If
                End If
            End If
            End With
        Next
    End If
Next

Exit Sub
End Sub



借鉴 https://www.cnblogs.com/hulianfei/p/7122450.html 修改了多sheet页的脚本