EZDML之前支持批量导出到Excel,最近EZDML又增加了批量导入Excel的功能,这里简单说明一下。
批量导入Excel
这里所谓批量,就是一次能导入多个表的意思。大概要求格式是:表名独占一行,注释(可选)占一行,列头占一行,然后是字段属性内容(一行一个字段,注释可多行),每个表之间至少有一行空行。
新版EZDML在模型菜单下增加了“导入Excel…”命令:
点击后弹出一个对话框:
左边是要粘贴Excel内容,我们打开一个Excel示例文件,这个是我之前用EZDML导出来的,我们直接全选并复制:
然后粘贴到EZDML的导入文本框中:
由于都是自家的格式,因此EZDML能自动识别所有内容,直接“确定”就可以了,程序弹出提示:
再次“确定”,就可以完成导入:
导入第三方文档
上面导入的是EZDML自己的格式,左手导右手,没什么挑战性。而大部分情况我们可能是拿到的是别人提供的数据字典文档,甚至有时就是接口文档,因此下面我们来导一个实际一点复杂一点的。
这里我们以艺龙的接口为例,这个接口是公开的,假设我要导入的是下面这个链接的文档:
https://open.elong.com/doc/info/cn-api-meta-hotel_data_rp
输入参数我们不管,我们要导入的是响应结果:
从Hotel节点开始选中内容,直到最后一个表格,右键复制内容:
打开Excel新建空白表格,粘贴(注意这一步不可省略,我们需要Excel中转一下):
在Excel中再次全选、复制,并到EZDML的导入Excel文本框中粘贴:
这次大家可能会发现有点不一样了,有些列EZDML并没有正确地识别出来,比如第一列和第二列就错了,我们点一下“C1”:
我们选择“字段名”,将第一列设置为字段名;同样地,我们把第二列改成逻辑名:
点击“确定”,弹出确认框:
可以看到,表名都有一个“节点”的后缀,这个我们一会处理。先点确定:
这个GuaranteeRule节点大宽了,原因是有个字段的逻辑名太长,我们改一下,把多出来的内容移到注释里:
再看就差不多了,只是“节点”这个后缀有点不顺眼:
在模型图上右键执行脚本,切换到JAVASCRIPT(点新建直到标题显示JAVASCRIPT),输入以下内容:
1 | //Java Script |
运行:
回到模型图,刷新,表名里的节点就去掉了:
扩展属性导入
如上所述,批量导入时,EZDML能自动识别大部分的内容,如字段名、逻辑名、数据类型、大小、精度、可为空、必填、唯一、约束、缺省值、注释。如果识别失败或错误,也可以手工辅助更正。
但自动识别的内容毕竟有限,如果还有其它属性(如是否只读等)需要导入,或者对自动识别的效果不满意,这时我们可在导入时勾选“保存值内容到字段参数”:
确定导入后,我们得到表内容,表面上跟之前没什么区别:
我们选中member的username字段,右键运行脚本,切换到JAVASCRIPT(点新建直到标题显示JavaScript),执行以下脚本:
1 | alert(curField.paramList.text); |
我们可以看到,原始内容一字不落地全保存下来了。这样,我们就可以根据需要写脚本来赋值了,比如我们运行以下脚本:
1 | //Java Script |
运行结果:
这时我们会看到,相应的字段属性确实已经有值了:
通过这种方法,我们可以方便地导入任意属性列。
表字段Excel粘贴
可能有人也注意到了表属性中也有一个“从Excel粘贴”的右键菜单:
这个粘贴跟上面的批量导入稍有区别,它的作用是把Excel的内容按单元格式位置一个一个地粘贴到字段列表的表格中,等于是代替用户批量输入了。并且是严格地从当前选中的行、列开始,不一定是第一行,也不一定是第一列,你可以从中间任一单元格开始粘贴。
比如我想把上图Rid开始的5个字段的数据类型修改为浮点,长度为(12,2),则我们可以在Excel中批量录入以下内容,并复制:
然后我们点一下RID的数据类型单元格(把当前焦点移到第三行第三列),执行右键“从Excel粘贴”:
弹出一个确认窗口:
点“确定”,就可以看到效果了:
结合下一节的复制Excel文本功能,先把内容复制到Excel,在Excel里批量改好,再粘贴回来,我们就可以轻松实现对表字段任意内容的批量修改了。
复制Excel文本
表属性右键菜单有个“复制Excel文本”,
这个就是简单快速地复制一下,我们可以粘贴到Excel看看:
如果希望批量复制Excel文本,可在模型图中多选表对象,然后右键菜单执行“批量复制|Excel文本”:
这样就可以把多个表的Excel文本一起复制到剪贴板了。
批量导出Excel
顺便再说下批量导出Excel。一般我们是在模型图中选中要导出的表(不选则导出全部),然后右键导出:
弹出导出框,在保存文件类型中选择Excel:
保存成功弹出提示:
确定打开,这时会有一个警告:
点是即可:
这个导出的格式其实是HTML来的,导出时是通过HTML模板来生成的,这个模板是位于EZDML/Templates下的export_xls_ch.ps_,我们打开看下:
嗯,跟JSP、ASP很类似,很小,总共才200行,前面100行都是样式。
不过,是PASCAL语法;又不过,我们一般只需要小修改,并不需要完全掌握PASCAL。我们翻到150行左右,读懂这一段你就可以随便改了:
当然了,EZDML保存的DMJ文件内容是JSON格式文本,你也可以可以自己用其它工具编程处理:
OK,关于Excel我们暂时就说这么多了。