上一周似乎就没写blog,不是我不想写,是真没抽出时间来,不能匆匆写两句就完事,没有价值和不写一样,所以利用现在的空闲时间要补上来。
这段时间为啥忙,一个实习生也不会有啥可忙的应该,但是公司的case大,我也要干点简单的活,简单的活就是把需求文档中的每个实体创建到pdm中去,为下一阶段做好准备,当然这个活是简单到了只要ctrl+c和ctrl+v的份上了,但是能做好简单的事情就是不简单!而且这次量变引起了质变!有上千个实体总高,总共上万个字段……每个每个的复制粘贴过去……
于是网上搜索关于word表格能不能转成pdm的相关内容,我知道这很天真,pdm好输出word,但是word怎么会那么好变pdm呢?在javaeye看到了点提示说可以用脚本实现,而脚本也没提供出来(要注册javaeye还要等三天后可以下载……)。
鉴于此,我便找到了pd的脚本编程的帮助文档,写的很详细,而实际呢是用不了那么多的,实际是vbscript脚本调用pd提供的编程接口。代码简单,先贴上来了:
脚本代码
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格式:
Code
表名 表code 表说明
********************此分割线用来分割表名与字段(不可删除)***********************
字段名1 字段code VARCHAR2(32) 说明
字段名2 字段code VARCHAR2(256) 说明
可能会好奇中间那根线,是的,我也没弄明白,但是实践结果是没有那个线会漏掉下面第一个字段!因为是用午间休息时间试验的,所以也没去深入考究,有知道的朋友可以告诉我一声。
这样,只要把word表格里的数据复制到txt中,然后把制表符替换成空格,然后去pd中运行脚本就行啦(PD中怎么运行脚本?直接用Ctrl+Shift+X吧,Tools工具栏里也有,不用费劲找了也。)
由此一来,工作效率提高了有60%!呵呵,爽!