如何将在Excel中设计的实体对象字段表导入PowerDesigner

来源:互联网 发布:服装搭配软件 编辑:程序博客网 时间:2024/06/05 11:02

今天遇到将Excel中设计的对象字段表转换成MySQL中的表这一问题,我的解决思路是利用PowerDesigner创建PDM模型再转换到sql脚本。这里涉及的到一个比较麻烦的事情是,如何将那么多的字段方便快速的赋给PDM模型实体表?通过参考网络资料,整理了下面的脚本,并给出了详细注释,另外在文章结尾也提供了完成的代码和使用说明文件供下载。

'这个脚本的作用是将Excel模板中Sheet表对应的数据模型通过PowerDesigner的PDM转换成MySQL数据库中的表'使用时可能修改到的地方主要是Excel文档的路径和数据模型列读取赋值部分,如果严格使用提供的Excel模板就不用修改列读取赋值了Option Explicit                     '强制显式声明模块中的所有变量Dim mdl                             '声明一个PD模型Set mdl = ActiveModel               '设置模型值即为当前活动的模型If (mdl Is Nothing) Then    MsgBox ("不存在活动的PD模型")End IfDim HaveExcelDim RQ                              '声明一个请求             RQ = MsgBox("你的电脑上安装了Excel软件吗 ?", vbYesNo + vbInformation)If RQ = vbYes Then    HaveExcel = True    Dim x1                                                              '声明一个变量    Set x1 = CreateObject("Excel.Application")                          '为x1变量赋值一个Excel对象    x1.Workbooks.Open "C:\Users\Administrator\Desktop\templet.xlsx"     '用x1打开指定路径Excel文档(默认xlsx文件是在桌面)    x1.Workbooks(1).Worksheets("Sheet1").Activate                       '指定要打开的Sheet表Else    HaveExcel = FalseEnd Ifa x1, mdl                                               '调用函数a(x1,md1)'声明子函数a(x1,md1)Sub a(x1, mdl)      Dim rwIndex                                             '声明Sheet表的行标Dim table                                               '声明PD模型的表实体Dim sheet                                               '声明一个Sheet对象Dim col                                                 '声明表实体的属性列on error Resume Next                                    '指明后面的代码即使出错也要执行完成MsgBox ("开始构造数据表")Set table = mdl.Tables.CreateNew                        '创建一个表实体Set sheet = x1.Workbooks(1).Worksheets("Sheet1")        '为sheet对象赋值table.Name = sheet.Cells(1, 2).Value                    '指定表的中文名,方便理解。table.Code = sheet.Cells(1, 7).Value                    '指定表的实体名'指定要遍历的Excel行,第1行是表头,第2行是中文说明,第三行是英文说明,则从第4行开始,默认Sheet表有200行数据For rwIndex = 4 To 200                                      With sheet                                          '在Excel的Sheet表这个对象上执行下列操作        If .Cells(rwIndex, 2).Value = ""  Then          '如果该行第2列为空,说明所有字段已经读完了,可以结束了            Exit For        End If        Set col = table.Columns.CreateNew               '创建PD模型表实体的属性列        col.Name = .Cells(rwIndex, 1).Value             '指定字段中文名,便于理解        col.Code = .Cells(rwIndex, 2).Value             '指定字段名,程序或模型中使用的名字        col.Comment = .Cells(rwIndex, 3).Value          '指定字段说明,对字段的详细描述        col.DataType = .Cells(rwIndex, 4).Value         '指定字段数据类型        col.Length = .Cells(rwIndex,5).Value            '指定字段长度        col.Precision = .Cells(rwIndex,6).Value         '指定字段数据精度        If .Cells(rwIndex,7).value="" Or .Cells(rwIndex,7).value="False" Or .Cells(rwIndex,7).value="F" Then            col.Primary = False                         '指定是否主键,true表示为主键        Elseif .Cells(rwIndex,7).value="True" Or .Cells(rwIndex,7).value="T" Then            col.Primary = True        Else MsgBox("主键标记设置错误")        End If        If .Cells(rwIndex,8).value="" Or .Cells(rwIndex,8).value="False" Or .Cells(rwIndex,8).value="F" Then            col.Primary = False                         '指定是否外键,true表示为外键        Elseif .Cells(rwIndex,8).value="True" Or .Cells(rwIndex,8).value="T" Then            col.Primary = True        Else MsgBox("外键标记设置错误")        End If        If .Cells(rwIndex,9).value="" Or .Cells(rwIndex,9).value="False" Or .Cells(rwIndex,9).value="F" Then            col.Primary = False                         '指定是否非空,true表示为非空        Elseif .Cells(rwIndex,9).value="True" Or .Cells(rwIndex,9).value="T" Then            col.Primary = True        Else MsgBox("非空标记设置错误")        End If    End WithNext                                                    'For循环变量的下一个值MsgBox ("数据表构造完成")End Sub

问题解决方案相关代码及文件下载:Excel_PD_Table

阅读全文
0 0
原创粉丝点击