powerdesigner-从excel导入table模型

近在使用pd过程中,遇到一个问题,就是类的字段,方法,类型在excel中整理好了,想导入到pd直接生成类图。网上有很多生成实体表的方法,于是自己模仿写了一个生成类图的,在pd中的工具--扩展--脚本,或者直接快捷键shift + ctrl + X 打开脚本窗口,执行以下代码即可

1.编写EXCEL:

2.打开PowerDesigner,创建物理模型(Physical Data Model)-因不同的pd模型在使用时 是不通的编码-所以这里测试使用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 "C:\Users\huage\Desktop\test\11.xlsx"
  x1.Workbooks(1).Worksheets("Sheet1").Activate
Else
   HaveExcel = False
End If 

a x1, mdl 

sub a(x1,mdl)
dim rwIndex
dim tableName
dim colname
dim table
dim col
dim count 

‘on error Resume Next
For rwIndex = 1 To 1000 step 1
    With x1.Workbooks(1).Worksheets("Sheet1")
  ‘MsgBox "生成数据表结构共计1 ="+CStr(.Cells(2,2).Value ), vbOK + vbInformation, "表"
   If .Cells(rwIndex, 1).Value = "" Then
       Exit For
   End If
  If .Cells(rwIndex, 3).Value = "" Then
    set table = mdl.Tables.CreateNew
        table.Name = .Cells(rwIndex , 1).Value
        table.Code = .Cells(rwIndex , 2).Value
        count = count + 1
   Else
    colName = .Cells(rwIndex, 1).Value
    set col = table.Columns.CreateNew
   ‘MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"
    col.Name = .Cells(rwIndex, 1).Value
    ‘MsgBox col.Name, vbOK + vbInformation, "列"
     col.Code = .Cells(rwIndex, 2).Value
    col.Comment = .Cells(rwIndex,1).Value
    col.DataType = .Cells(rwIndex, 3).Value
   End If
  End With
Next 

MsgBox "生成数据表结构共计" + CStr(count), vbOK + vbInformation, "表" 

Exit Sub
End sub 

第二种-有解析版(但有写小bug)

‘开始
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 "C:\Users\huage\Desktop\test\11.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

on error Resume Next

set table = mdl.Tables.CreateNew ‘创建一个 表实体
table.Name = "Sheet1" ‘指定 表名,如果在 Excel文档里有,也可以 .Cells(rwIndex, 3).Value 这样指定
table.Code = "Sheet1" ‘指定 表名
count = count + 1

For rwIndex = 1 To 1000 ‘指定要遍历的 Excel行标 由于第1行是 表头, 从第2行开始
With x1.Workbooks(1).Worksheets("Sheet1")
If .Cells(rwIndex, 1).Value = "" Then
Exit For
End If

set col = table.Columns.CreateNew ‘创建一列/字段
‘MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"
If .Cells(rwIndex, 3).Value = "" Then
col.Name = .Cells(rwIndex, 1).Value ‘指定列名
Else
col.Name = .Cells(rwIndex, 3).Value
End If
‘MsgBox col.Name, vbOK + vbInformation, "列"
col.Code = .Cells(rwIndex, 1).Value ‘指定列名
col.DataType = .Cells(rwIndex, 2).Value ‘指定列数据类型
col.Comment = .Cells(rwIndex, 5).Value ‘指定列说明
If .Cells(rwIndex, 4).Value = "否" Then
col.Mandatory = true ‘指定列是否可空 true 为不可空
End If
If rwIndex = 2 Then
col.Primary = true ‘指定主键
End If
End With
Next
MsgBox "生成数据 表结构共计 " + CStr(count), vbOK + vbInformation, " 表"

Exit Sub
End sub

5.测试
5.1用的EXCEL:C:\Users\huage\Desktop\test\11.xlsx注意这个路径要与脚本中的路径一致

5.2运行脚本
5.3检查导入效果

时间: 2024-10-07 11:41:58

powerdesigner-从excel导入table模型的相关文章

powerdesigner由excel导入到类图中

最近在使用pd过程中,遇到一个问题,就是类的字段,方法,类型在excel中整理好了,想导入到pd直接生成类图.网上有很多生成实体表的方法,于是自己模仿写了一个生成类图的,在pd中的工具--扩展--脚本,或者直接快捷键shift + ctrl + X 打开脚本窗口,执行以下代码即可 Option Explicit Dim mdl 'Set mdl = ActiveModelIf (mdl Is Nothing) Then MsgBox "There is no Active Model"

.net 自己写的操作Excel 导入导出 类(以供大家参考和自己查阅)

由于现在网页很多都关系到Excel 的操作问题,其中数据的导入导出更是频繁,作为一个菜鸟,收集网上零散的知识,自己整合,写了一个Excel导入到GridView ,以及将GridView的数据导出到EXCEL的类方法,以供参考和方便自己以后查阅. 1 #region 引用部分 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Dat

Excel导入oracle库

Excel导入oracle库 ? 建表 ? /*==============================================================*/ /* DBMS name: ORACLE Version 10gR2 */ /* Created on: 2017/9/18/周一 14:19:00 */ /*==============================================================*/ ? ? drop table D

将Excel [导入到数据库] or 将数据 [导入到Excel]

将Excel导入到数据库实现如下: 前台代码: @model IEnumerable<Model.Student> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script

c#中高效的excel导入sqlserver的方法

将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用 bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现.不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而 真正的导入过程只需要4.5秒. using System;using System.Data;using System.Windo

c# excel 导入 与 导出(可直接用)

c#操作excel方式很多 采用OleDB读取EXCEL文件: 引用的com组件:Microsoft.Office.Interop.Excel.dll   读取EXCEL文件 将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取 这些其实都不好,因为需要配置环境 我要介绍的是与环境无关的,即使部署到服务器也没有啥关系: 需要引用 using NPOI.HSSF.UserModel; using NPOI.SS.Formula.Eval; using NPOI.SS.UserModel;

(转)高效的将excel导入sqlserver中

大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClient.SqlBulkCopy 对于新手来说还是比较陌生的,这个就是传说中效率极高的bcp,6万多数据从excel导入到sql只需要4.5秒. using System;using System.Data;using System.Windows.Forms;using System.Data.Ole

TP5.0 excel 导入导出

引第三方的phpexcel类库放到 ThinkPHP\Library\Vendor\demo下,自己建的文件夹demo 再将Excel.class放到ThinkPHP\Library\Org\class下,自己建的文件夹class 控制器: <?php namespace Admin\Controller; use Think\Controller; class ExcelController extends Controller { public function excelList(){ $

excel导入到Orcle

Excel导入到Oracle中 在Oracle中创建一个表,与excel的表头对应 将excel文件保存为.csv格式 创建一个.ctl文件 load data infile 'd:\xiaoyou.csv' append into table xiaoyou fields terminated by ',' (ID,name,gender,etime,gtime,major,class,tel,address,QQ,wechat,mail,company,post) 4.输入命令 Sqlldr