[转]PowerDesigner Excel 导入表结构 表及字段信息批量修改 批量删除 批量添加
原文链接:https://blog.csdn.net/sinu88/article/details/85077008
这几天 使用了 PowerDesigner 来 整理表结构,分享下。
下面,我们 通过 VBScript脚本 实现了 excel导入表字段、批量修改表前缀、批量添加表字段、批量添加表字段。
执行脚本:
ctrl + shift + x 打开运行VBS 代码窗口,粘贴脚本后,运行
1.excel 导入 PowerDesigner
'开始
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 "E:\temp\123.xls" '指定 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 = 2 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, 1).Value = "" Then
col.Name = .Cells(rwIndex, 1).Value '指定列名
Else
col.Name = .Cells(rwIndex, 1).Value
End If
'MsgBox col.Name, vbOK + vbInformation, "列"
col.Comment = .Cells(rwIndex, 1).Value '指定列说明
col.Code = .Cells(rwIndex, 2).Value '指定列名
col.DataType = .Cells(rwIndex, 3).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
2.PowerDesigner 批量修改表前缀
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl 'the current model
'get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
Else
ProcessFolder mdl
End If
'This routine copy name into code for each table, each column
'of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
Dim NameStr , CodeStr
for each Tab in folder.tables
'修改 Tab.name 与 Tab,code
Tab.name = Replace( Tab.name , "OLD_" , "NEW_")
Tab.code = Replace( Tab.code , "OLD_" , "NEW_")
next
end sub
3.PowerDesigner 批量删除表字段
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl 'the current model
'get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
Else
ProcessFolder mdl
End If
'This routine copy name into code for each table, each column
'of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
Dim col 'running column
for each col in tab.columns
'删除公共字段字段 by Sinu
if instr(col.code,"CJR")<>0 then
col.Delete
end if
if instr(col.code,"CJSJ")<>0 then
col.Delete
end if
if instr(col.code,"XGR")<>0 then
col.Delete
end if
if instr(col.code,"XGSJ")<>0 then
col.Delete
end if
next
end if
next
MsgBox "success"
end sub
4.PowerDesigner 批量添加表字段
Option Explicit
Dim mdl ' the current model
Set mdl = ActiveModel
Dim Tab 'running table
Dim col_1
Dim col_2
Dim col_3
Dim col_4
' 定义属性变量
for each Tab in ActiveModel.Tables
Set col_1 = Tab.Columns.CreateNew
Set col_2 = Tab.Columns.CreateNew
Set col_3 = Tab.Columns.CreateNew
Set col_4 = Tab.Columns.CreateNew
'添加公共字段 by Sinu
col_1.name = "创建人"
col_1.code = "CJR"
col_1.DataType = "varchar(50)"
col_1.comment= "创建人"
col_2.name = "创建时间"
col_2.code = "CJSJ"
col_2.DataType = "datetime"
col_2.comment= "创建时间"
col_3.name = "修改人"
col_3.code = "XGR"
col_3.DataType = "varchar(50)"
col_3.comment= "修改人"
col_4.name = "修改时间"
col_4.code = "XGSJ"
col_4.DataType = "datetime"
col_4.comment= "修改时间"
next
MsgBox "success"
————————————————
版权声明:本文为CSDN博主「SinuLin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinu88/article/details/85077008
相关文章
- 用excel批量生成insert语句
- 使用Excel批量生成SQL语句,用过的人都说好
- EXCEL图表次坐标轴/怎么让图表两边都有坐标轴?
- asp.net core导出导入excel
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
- 自从学会了Pandas,我用Python处理Excel更高效了
- Python办公自动化之 openpyxl 操作 Excel
- 《从Excel到R 数据分析进阶指南》一2.9 查看后10行数据
- Python Excel自动化之 如何根据某一列快速对比两excel文件不同并输出不同内容
- Excel VLOOKUP实用教程之 05 vlookup如何从列表中获取最后一个值?(教程含数据excel)
- PHP配合JS导出Excel大量数据
- 基于C#语言利用Microsoft.office.introp.excel操作Excel总结
- Python Excel自动化之 如何根据某一列快速对比两excel文件不同并输出不同内容
- Excel VLOOKUP实用教程之 04 vlookup如何实现三变量查找,三个条件字段查询数据?(教程含数据excel)
- Excel VLOOKUP实用教程之 03 使用下拉列表作为查找值vlookup?(教程含数据excel)
- Excel VLOOKUP实用教程之 07 vlookup如何解决肉眼看完全匹配,但是就是返回N/A错误(教程含数据excel)
- Excel VLOOKUP实用教程之 10 在使用 VLOOKUP 函数时处理错误?(教程含数据excel)
- Excel VLOOKUP实用教程之 09 VLOOKUP 与多个条件一起使用?(教程含数据excel)
- 使用 openpyxl 在 Excel 电子表格中自动执行日常任务
- EXCEL-批量修改列宽
- XmLHttpRequst下载Excel
- 利用Excel批量高速发送电子邮件
- 利用Excel批量高速发送电子邮件
- 【学习笔记】(尾附:read_excel()参数表)解决:TypeError: read_excel() got an unexpected keyword argument ‘index‘
- Excel if判断 费用计算
- C# Excel To DataTable