Excel数据导入说明
一、实现原理
通过Excel和配置文件建立NC数据项的对应关系,然后将Excel里面的数据组织成VO,最后将VO保存到数据库中。单据的主表数据和子表数据是分别导入的,也就是说需要单据上增加两个按钮,如果是多子表,则需要单据上增加多个按钮,将子表数据需要分别导入。
二、使用步骤:
1打Excel导入功能的通用补丁,部署plh模块的EJB
2创建NC单据数据项的配置文件
2.1配置文件路径
配置文件为xml格式,需要放在固定的路径下:nchome_ccppgcbjt\resources\cmconfig\file_export_import\。
2.2配置文件节点说明
l Ufinterface 根节点,属性roottag:导入数据的数据库表名。属性:headClass:对应的单据VO,如果是导入的主表数据则填写表头VO,如果是字表则为表体VO。属性:excelColumnLineNum:在Excel中的第几行为表头字段,如下图则为1。
l Column为数据列的配置节点
Column的子节点为数据列需要设置的属性。
l excel_column:对应Excel表里面的列名称。
l field:对应VO里面的字段。
l nullallowed:是否允许为空。
l datatype:NC的数据类型,如日期为:UFDate。
l pkfield:设置为field相同值。
l ref:如果为参照,则输入参照的名称,注意,这里的参照需要从表bd_bdinfo中找,其中的bdname作为这里的参照名称。
l trantype:翻译类型,当Excel中的某一列为参照时,需要将值翻译为PK值,这里支持两种方式code和name。也就是说,excel可以放参照的编码也可以放参照的名称,例如部门,excel的值可以是“001”,也可以是“销售部”。
l table:默认为head,不需要修改。
3在NC单据增加的按钮上实现导入的业务逻辑
3.1创建ImportDataFromExcel类的实例
需要在调用的单据UI的包下面创建ImportDataFromExcel类的实例,例如创建类importPsnFromExcelextends ImportDataFromExcel。
3.2 UI事件调用
importPsnFromExcel importHeadData = new importPsnFromExcel(this.clientUI,"P1"); importHeadData.ImportHeadData("P2");
其中:P1参数为单据编号字段,P2为xml配置文件名称。
如果单据有特殊的数据验证或者单据的VO不继承supervo,则在ImportDataFromExcel类的实例中重写ImportHeadData方法,以及VO的保存方法importExceltopinv。
补丁代码:我的资源:“单据UI按钮导入Excel数据”