如何将在Excel中设计的实体对象字段表导入PowerDesigner
2017-07-26 22:19
393 查看
今天遇到将Excel中设计的对象字段表转换成MySQL中的表这一问题,我的解决思路是利用PowerDesigner创建PDM模型再转换到sql脚本。这里涉及的到一个比较麻烦的事情是,如何将那么多的字段方便快速的赋给PDM模型实体表?通过参考网络资料,整理了下面的脚本,并给出了详细注释,另外在文章结尾也提供了完成的代码和使用说明文件供下载。
问题解决方案相关代码及文件下载:Excel_PD_Table
'这个脚本的作用是将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
相关文章推荐
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- 如何将数据导入到excel里面
- mysql数据库对象导入PowerDesigner和powerDesigner模板导入mysql数据库
- sharepoint通过excel导入list时报错:导入数据时(方法'Post'作用于对象'IOWSPostData'时失败)
- 牛腩购物9 用户表设计/动软生成器/金钱字段decimal(18, 2)/ 注册的时候的前台js判断/后台代码判断/正则表达式软件/RegexBuddy/设置数据库字段的唯一性约束/如何获取控件在前台html的id值/如何将C#的后台正则换成js的正则
- [导入]C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式.zip(8.18 MB)
- 如何将数据库中的表导入到PowerDesigner中
- 【转载】如何将Sql Server中的数据表导入到PowerDesigner中
- 一个坑爹的软件在导入execl时报打开Excel文件出错:Microsoft Jet 数据库引擎找不到对象错误。
- 使用powerdesigner设计数据字典并导入到mysql数据库
- ASP.NET中如何把EXCEL中数据导入到SQL SERVER
- 如何实现数据从EXCEL表格导入到SQL Server
- 如何把EXCEL数据导入到SQL SERVER数据库中
- 如何提高C#中将数据导入到Excel的性能
- 使用powerDesigner设计表及导入oracle数据库中
- 如何导入不规则Excel数据
- PowerDesigner 建模后如何导入到数据库
- Hibernate 查询多个字段返回的list如何转为自定义对象,以及转换异常
- 如何解决数据库中的字符型字段值中包含'0A'时,导出的文件用EXECEL打开时行数变多或者将结果导入数据库出错
- 如何将数据库中的表导入到PowerDesigner中