您的位置:首页 > 其它

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

2017-07-26 22:19 393 查看
今天遇到将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 If

Dim HaveExcel
Dim 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 = False
End If
a 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 With
Next                                                    'For循环变量的下一个值
MsgBox ("数据表构造完成")
End Sub


问题解决方案相关代码及文件下载:Excel_PD_Table
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  powerdesigner excel
相关文章推荐