注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

等闲识得东风面,万紫千红总是春!

 
 
 

日志

 
 

将word表格导入PowerDesigner中实现快速创建PDM   

2009-08-19 15:11:39|  分类: Sybase |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转载自:http://www.cnblogs.com/pc-funning/archive/2009/01/21/1379537.html
上一周似乎就没写blog,不是我不想写,是真没抽出时间来,不能匆匆写两句就完事,没有价值和不写一样,所以利用现在的空闲时间要补上来。

  这段时间为啥忙,一个实习生也不会有啥可忙的应该,但是公司的case大,我也要干点简单的活,简单的活就是把需求文档中的每个实体创建到pdm中去,为下一阶段做好准备,当然这个活是简单到了只要ctrl+c和ctrl+v的份上了,但是能做好简单的事情就是不简单!而且这次量变引起了质变!有上千个实体总高,总共上万个字段……每个每个的复制粘贴过去……

  于是网上搜索关于word表格能不能转成pdm的相关内容,我知道这很天真,pdm好输出word,但是word怎么会那么好变pdm呢?在javaeye看到了点提示说可以用脚本实现,而脚本也没提供出来(要注册javaeye还要等三天后可以下载……)。

  鉴于此,我便找到了pd的脚本编程的帮助文档,写的很详细,而实际呢是用不了那么多的,实际是vbscript脚本调用pd提供的编程接口。代码简单,先贴上来了:

 

将word表格导入PowerDesigner中实现快速创建PDM  - 才人 - 我的博客将word表格导入PowerDesigner中实现快速创建PDM  - 才人 - 我的博客脚本代码

Option Explicit

'-----------------------------------------------------------------------------

' 魔尊年少时制作 http://pc-funning.cnblogs.com/

' 随便修改增强,希望能做记录,做注释,保留出处

' 2009-1-21最后整理

'-----------------------------------------------------------------------------

Dim system, file

Set system = CreateObject("Scripting.FileSystemObject") '创建文件对象

Dim ForReading, ForWriting, ForAppending

dim str

dim tittle

dim first

ForReading   = 1 ' 设置文件只读 

ForWriting   = 2 ' 设置文件写入

ForAppending = 8 ' 设置文件追加

'-----------------------------------------------------------------------------

' 主要程序

'-----------------------------------------------------------------------------

Set file = system.OpenTextFile("D:\table.txt", ForReading)'打开文本文档

Dim noLine

Dim Tab  '定义一个表,vbscript中变量没有那么严格的类型,但此变量将来将用来表示table

ValidationMode = True

Dim mdl ' 定义当前激活的模型,也就是mdl

Dim Col

dim dm, dmstr

Dim SSS

Dim isNewTable

Set mdl = ActiveModel '获取当前激活模型

set Tab = mdl.Tables.CreateNew

isNewTable = True

first=file.readline '读文档按行读

tittle=split(first) '以空格分隔划分入数组,获取的是表的属性,可以获取更多属性,根据实际情况而定

tab.name=tittle(0) 'name

tab.code=tittle(1) 'code

tab.comment=tittle(2) 'comment

Do While file.AtEndOfStream <> True '循环读取文档的每一行

   SSS = file.ReadLine

   str=split(SSS)

   

   if isNewTable = True then

     if SSS <> "" then

       isNewTable = False

       

     end if

   elseif SSS = "" then

     set Tab = mdl.Tables.CreateNew  '创建新表,这是读到空行时的表现,自己用来警示

     

   else  

     set Col=tab.Columns.CreateNew '创建一行字段

     Col.name = str(0) '依次设置属性,同表的属性,字段熟悉也可以设置更多,根据实际情况

     Col.Code= str(1)

     col.datatype=str(2)

     col.Comment=str(3)

     

   end if  

Loop

file.Close

 

   但是可能你发现了,这个读取的文件是从txt文件读取的,那么txt文件的要求格式呢?其实原理是很简单的使用split函数分隔字符串用来获取要写入的属性,然后调用接口写入属性。附txt格式:

 

将word表格导入PowerDesigner中实现快速创建PDM  - 才人 - 我的博客将word表格导入PowerDesigner中实现快速创建PDM  - 才人 - 我的博客Code

表名 表code 表说明

********************此分割线用来分割表名与字段(不可删除)***********************

字段名1 字段code VARCHAR2(32) 说明

字段名2 字段code VARCHAR2(256) 说明

 

  可能会好奇中间那根线,是的,我也没弄明白,但是实践结果是没有那个线会漏掉下面第一个字段!因为是用午间休息时间试验的,所以也没去深入考究,有知道的朋友可以告诉我一声。

  这样,只要把word表格里的数据复制到txt中,然后把制表符替换成空格,然后去pd中运行脚本就行啦(PD中怎么运行脚本?直接用Ctrl+Shift+X吧,Tools工具栏里也有,不用费劲找了也。)

  由此一来,工作效率提高了有60%!呵呵,爽!

  评论这张
 
阅读(1613)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017