插件的code是参考网上代码的(抄过来改了一两行)
'导入Excel表结构
'开始
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 "D:/test.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 = "xxx表" '指定表名,如果在Excel文档里有,也可以通过.Cells(rwIndex, 1).Value指定
'table.Code = "xxx" '指定表Code,如果在Excel文档里有,也可以通过.Cells(rwIndex, 2).Value指定
'count = count + 1
For rwIndex = 2 To 200 step 1 '指定要遍历的Excel行标
With x1.Workbooks(1).Worksheets("Sheet1")
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 '指定列code
col.Comment = .Cells(rwIndex,1).Value '指定列说明
col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型
If .Cells(rwIndex, 4).Value = "否" Then
col.Mandatory = true'指定列是否可空,true为不可空
End If
End If
End With
Next
MsgBox "生成数据表结构共计" + CStr(count), vbOK + vbInformation, "张表"
Exit Sub
End Sub
可以把表结构整理成如下的excel表格,命名成test.xlsx,放在d盘根目录,然后在PD上创建物理模型,执行上面的脚本导入即可。
下面的表格:
1. 第一行是各列介绍,不会被导入
2. 黄色的两格,分别是实体名和物理表名
3. 必须填充的是字段名、字段code、字段类型
4. 其他列可自行增加,目的是为了excel更可读
字段名 | 字段code | 字段类型 | 字段处理描述 | 类目 | 标识符 | 数据元名称 | 说明 | |||
测试表 | testtable | |||||||||
整形列 | col_int | int | 测试 | |||||||
字符型列 | col_char | char(10) | 测试 | |||||||
浮点型列 | col_double | double | 测试 | |||||||
日期列 | col_date | date | 测试 | |||||||
时间列 | col_datetime | datetime | 测试 | |||||||
二进制列 | col_binary | binary(1024) | 测试 | |||||||
登记信息 | 登记信息 | |||||||||
姓名 | 姓名 | char(30) | 二期高价值 | |||||||
曾用名 | 曾用名 | char(30) | 二期高价值 | |||||||
性别 | 性别 | char(2) | 二期高价值 | |||||||
民族 | 民族 | char(2) | 二期高价值 | |||||||
身份证件类型 | 身份证件类型 | char(2) | 二期高价值 | |||||||
身份证号码 | 身份证号码 | char(18) | 二期高价值 | |||||||
政治面貌 | 政治面貌 | char(2) | ||||||||
出生地 | 出生地 | char(50) | ||||||||
出生日期 | 出生日期 | date | 二期高价值 | |||||||
国籍 | 国籍 | char(10) | ||||||||
照片 | 照片 | binary(1024) | ||||||||
宗教信仰 | 宗教信仰 | char(10) | ||||||||
兵役状况 | 兵役状况 | char(2) | ||||||||
健康状况 | 健康状况 | char(2) | 二期高价值 |