• 项目产品化——Excel数据库模板化导入(java)


    Excel导入可能是代码开发中比較常见的功能,一个项目假设有多个地方须要excel导入数据库。那么开发的工作量也将比較大,项目产品化过程中,将这么一个类似的功能进行封装合并也是必要的。封装好的代码仅仅须要

    用法:

    第一步进行数据库关于excel的配置

    第二步在jsp页面引入excel导入界面就可以

    拿到excel模板,不须要自己写后台代码,直接在数据库配置excel列与数据库字段的关系,然后在须要excel导入的地方,引入一个连接,就可以生成excel导入功能。

    数据库配置一定要正确

    //客户信息批量导入
    	function excelToData() {
    		var contextPath = "<%=request.getContextPath()%>";
    		var groupType = $("#cstGrpType").val();
    		$.showModalDialog(contextPath+"/util/openExcelToDataServlet?loginCode=<%=ContextUtil.getUserView().getLoginCode()%>&loginDept=<%=ContextUtil.getUserView().getOrgnizationId()%>&excelCode=CUSTOMER_GROUP¶m="+groupType,"客户群组成员导入",valueCallback,null,"350","150",2);
    	}



    一、可以解决的excel导入:

    1、  已明白的单个表的excel导入

    2、  已明白的多个没关系的表excel导入

    3、  已明白的多个有关系的表excel导入

    excel表格中内容必须从第一行第一列開始。当然能够通过页面设置,功能不复杂,这次的代码就不写了。类似下图中数据放在随机行随机列不支持


    二、数据库配置

    说明:excel数据库模板化导入,关键是在数据库配置,配置不能出错。

    ID

    NUMBER(10)

    主键,无意义

    EXCEL_CODE

    VARCHAR2(50)

    导出功能的标识,注意不同的excel导入功能excel_code不能反复,jsp页面传输參数之中的一个。

    EXCEL_INTO_TABLE

    VARCHAR2(64)

    excel导入的表。须要导入到哪个表中

    FILED_CODE

    VARCHAR2(64)

    字段代码。导入到对应表中的哪个字段

    FILED_NAME

    VARCHAR2(32)

    字段名称,与表字段相相应的excel列名,不是通过excel导入的字段。这个能够不写

    FILED_TYPE

    VARCHAR2(10)

    字段类型,

    S字符串,

    T表示时间,

    I表示数字,假设是主键,须要在TABLE_PK字段中,写上实体类的项目路径

    A表示登录人帐号,

    D表示加入人部门,

    N表示当前时间,

    P表示页面传入的參数,

    F表示外键,通过插入还有一个表生成外键(数字类型F&I,时间类型F&T,字符串类型F&S),须要在FILED_EXCELCODE_CONSTANT字段中写上外键表的excel_code

    C表示常量(数字类型C&I,时间类型C&T,字符串类型C&S)。眼下仅支持这些标记。

    FILED_EXTEND

    VARCHAR2(200)

    外部属性

    TABLE_PK

    VARCHAR2(128)

    记录表获得的序列号的标志,为空表示导入字段

    FILED_ORDER

    NUMBER

    记录插入顺序

    FILED_VALIDATE

    VARCHAR2(200)

    字段值为Y或者N。标记该字段是否须要验证,假设须要,将包括的值保存在FILED_EXCELCODE_CONSTANT字段中

    FILED_EXCELCODE_CONSTANT

    VARCHAR2(100)

    当FILED_TYPE为F或C时起作用。

    当为F时向还有一个表中插入数据,值为已存在的EXCEL_CODE 。当为C时表示的是常量的值

    FILED_EXCELCODE_ISRETURN

    CHAR(1)

    当FILED_TYPE为F时起作用。作为外键值输出,Y表示是返回值的字段。N表示非返回值的字段


    三、核心代码

    因为本人比較懒。大家就将就着看吧,代码有点多,重要的代码都在这,我就不提取了大笑,事实上后面的代码都是次要的。上面的知道是怎么回事,大家全然能够自己写,自己写的代码以后改动还easy改动。再多说一句:重点在数据库

    package com.haiyisoft.cc.util.web.struts;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.lang.reflect.Method;
    import java.math.BigDecimal;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import com.haiyisoft.cc.util.util.ExcelCheckMethod;
    import com.haiyisoft.entity.cc.util.CcExcel;
    import com.haiyisoft.entity.framework.EntitySequenceNo;
    import com.haiyisoft.ep.cache.util.LogUtil;
    import com.haiyisoft.ep.common.jpa.util.JPAUtil;
    import com.haiyisoft.ep.common.model.QueryParamList;
    import com.haiyisoft.ep.common.model.SortParam;
    import com.haiyisoft.ep.common.model.SortParamList;
    import com.haiyisoft.ep.framework.util.DropBeanUtil;
    import com.haiyisoft.ep.framework.view.UserView;
    
    /**
      * excel导入
      * @author 牟云飞
      * @tel 15562579597
      * @QQ  1147417467
      * @company 海颐软件股份有限公司
      * 
      * <p> Modification History:</p>
      * <p> Date         Author     Description </p>
      * <p>------------------------------------------------------------------</p>
      * <p> 2014-5-14	 muyunfei    新建   </p>
      */
    public class ExcelToDataAction extends  HttpServlet {
    
    	
    	private static final long serialVersionUID = 1L;
    	
    	
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		this.doPost(req, resp);
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		try {
    			importExcel(req,resp);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    
    	//excel导入
    	public void importExcel(HttpServletRequest request, HttpServletResponse response) throws Exception{
    	
    		//导入成功个数
    		int count=0;
    		//导入信息
    		String message="";
    		//获取excelcode
    		String excelCode=request.getParameter("excelCode");
    		if(null==excelCode||"".equals(excelCode)){
    			message="导入失败<br/>excelCode不存在";
    			request.setAttribute("message",message);
    		}
    		request.setAttribute("excelCode", excelCode);
    		String param=request.getParameter("param");
    		request.setAttribute("param", param);
    		//获得数据库中的excel配置
    		QueryParamList params = new QueryParamList();
    		params.addParam("excelCode", excelCode);
    		SortParamList sortParams = new SortParamList();
    		sortParams.addParam("excelIntoTable", SortParam.SORT_TYPE_ASCENDING);
    		sortParams.addParam("filedOrder", SortParam.SORT_TYPE_ASCENDING);
    		List<CcExcel> list = JPAUtil.load(CcExcel.class,params, null, null, sortParams, null);
    		//读取excel
    		try {
    			request.setCharacterEncoding("gbk");
    			response.setContentType("text/html;charset=gbk");
    			// 1. 创建工厂类
    			 DiskFileItemFactory factory = new DiskFileItemFactory();
    			// 2. 创建FileUpload对象
    			 ServletFileUpload upload = new ServletFileUpload(factory);
    			 
    			// 3. 推断是否是上传表单
    			// boolean b = upload.isMultipartContent(request);
    			 // 设置上传文件最大值
    			 upload.setSizeMax(25 * 1024 * 1024);
    			// 是文件上传表单
    			// 4. 解析request,获得FileItem项
    			 List<FileItem> fileitems = upload.parseRequest(request);
    			// 5. 遍历集合
    			 for (FileItem item : fileitems) {
    				// 推断是不是普通字段
    				 if (!item.isFormField()) {
    						// 获得流,读取数据写入文件
    						InputStream in = item.getInputStream();
    					 	Workbook book = createWorkBook(in,item.getName());
    					    // 获得第一个工作表对象
    						Sheet sheet = book.getSheetAt(0);
    					 	if(0==sheet.getLastRowNum()){
    							//假设没有数据
    							request.setAttribute("message", "excel的sheet0中不存在数据");
    							request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    						}
    						
    						// 第一行为标题,从第二行開始录入
    						for (int i = 1; i <= sheet.getLastRowNum(); i++) {
    							//标题行,用来对例如便得到数据
    							Row titleRow = sheet.getRow(0);
    							//数据行
    							Row row = sheet.getRow(i);
    							String sql_name="";
    							String sql_value="";
    							String sql_table="";
    							QueryParamList paramsList=null;
    							int fieldCount=1;
    							for (int j = 0; j < list.size(); j++) {
    								CcExcel excelItem = list.get(j);
    								if(j==0){
    									//获取数据库表明
    									sql_table=excelItem.getExcelIntoTable();
    									paramsList=new QueryParamList();
    								}
    								//解决多表插入问题
    								if(!sql_table.equals(excelItem.getExcelIntoTable())){
    									//假设表不一样,先插入一个
    									String sql="insert into "+sql_table+"("+sql_name+")"+" values("+sql_value+")" ;
    									JPAUtil.executeNativeUpdate(sql,paramsList);
    									//重置条件
    									sql_table=excelItem.getExcelIntoTable();
    									sql_name="";
    									sql_value="";
    									fieldCount=1;
    									paramsList=new QueryParamList();
    								}
    								//插入的类型
    								String fieldType =excelItem.getFiledType();
    								//外部属性
    								String fieldExtend=excelItem.getFiledExtend();
    								//序列号
    								String table_pk=(excelItem.getTablePk()+"").trim();
    								//是否须要验证,N不验证  方法名
    								String insert_validate=(excelItem.getFiledValidate()+"").trim();
    								
    								//字段名
    								if(null!=excelItem.getFiledCode()&&!"".equals(excelItem.getFiledCode())){
    									if(1!=fieldCount){
    										sql_name+=",";
    										//列值占位
    										sql_value+=",";
    									}
    									fieldCount++;
    									sql_name+=excelItem.getFiledCode();
    									//获得用户session
    									UserView urser= (UserView) request.getSession().getAttribute("userView");
    									String loginCode="";
    									String loginDept="";
    									//解决再次提交session消失的问题
    									if(null==urser||"".equals(urser)){
    										loginCode=request.getParameter("loginCode");
    										loginDept=request.getParameter("loginDept");
    									}else{
    										loginCode=urser.getLoginCode();
    										loginDept=urser.getOrgnizationId()+"";
    									}
    									request.setAttribute("loginCode", loginCode);
    									request.setAttribute("loginDept", loginDept);
    									String value_temp="";
    									//设置字段值
    									if ("T".equals(fieldType)){  //字段类型T表示是时间类型
    										sql_value = sql_value+ "TO_DATE(:dt"+j+",'YYYY-MM-DD HH24:MI:SS') ";
    										int position= getCellPosition(titleRow,excelItem.getFiledName());
    										if(-1!=position){
    											//用来验证时候校验
    											value_temp= this.getValue((Cell) row.getCell(position));
    											//校验
    											String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    											if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    												//校验能够保存
    												value_temp=item_value[1];
    											}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    												message="导入失败<br/>"+item_value[1];
    												request.setAttribute("message",message);
    												request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    												return ;
    											}
    											
    											paramsList.addParam("dt"+j, value_temp);
    										}else{
    											message="导入失败<br/>"+message;
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    									}else if ("I".equals(fieldType)){ //字段类型I表示是数字类型
    										sql_value = sql_value + "TO_NUMBER(:pk"+j+") ";
    										//查看序列号
    										if(null!=table_pk&&!"".equals(table_pk)&&!"null".equals(table_pk)){
    											//查询Ep_Sys_Entity_Sequence_No表获得数据
    											QueryParamList para=new QueryParamList();
    											para.addParam("entityType", table_pk);
    											String queryPKhql="select to_char(a.maxNo) from  EntitySequenceNo a where  a.entityType='"+table_pk+"'";
    											List<Object> listPK = JPAUtil.find(queryPKhql);
    									
    											//最大值加1
    											String updateSql="update EntitySequenceNo a set a.maxNo=a.maxNo+1 where a.entityType='"+table_pk+"'";
    											JPAUtil.executeUpdate(updateSql);
    											//用来验证时候校验
    											value_temp= listPK.get(0)+"";
    											//校验
    											String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    											if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    												//校验能够保存
    												value_temp=item_value[1];
    											}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    												message="导入失败<br/>"+item_value[1];
    												request.setAttribute("message",message);
    												request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    												return ;
    											}
    											paramsList.addParam("pk"+j, value_temp);
    										}else if(null!=fieldExtend&&!"".equals(fieldExtend)){
    											DropBeanUtil util = new DropBeanUtil() ;
    											int position= getCellPosition(titleRow,excelItem.getFiledName());
    											if(-1!=position){
    												//用来验证时候校验
    												value_temp= this.getValue((Cell) row.getCell(position));
    												String dropName = util.getDropLabel(fieldExtend, value_temp);
    												//校验
    												String[] item_value = checkValue(dropName,insert_validate,row,param,titleRow);
    												if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    													//校验能够保存
    													dropName=item_value[1];
    												}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    													message="导入失败<br/>"+item_value[1];
    													request.setAttribute("message",message);
    													request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    													return ;
    												}
    												paramsList.addParam("pk"+j, Integer.valueOf(dropName));
    											}else{
    												message="导入失败<br/>"+message;
    												request.setAttribute("message",message);
    												request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    												return ;
    											}
    										}else{
    											int position= getCellPosition(titleRow,excelItem.getFiledName());
    											if(-1!=position){
    												//用来验证时候校验
    												value_temp= this.getValue((Cell) row.getCell(position));
    												//校验
    												String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    												if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    													//校验能够保存
    													value_temp=item_value[1];
    												}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    													message="导入失败<br/>"+item_value[1];
    													request.setAttribute("message",message);
    													request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    													return ;
    												}
    												paramsList.addParam("pk"+j, value_temp);
    											}else{
    												message="导入失败<br/>"+message;
    												request.setAttribute("message",message);
    												request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    												return ;
    											}
    										}
    									}
    									else if ("A".equals(fieldType)){ //字段类型A表示是登录人员帐号
    										//用来验证时候校验
    										value_temp= loginCode;
    										//校验
    										String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    										if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    											//校验能够保存
    											value_temp=item_value[1];
    										}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    											message="导入失败<br/>"+item_value[1];
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										sql_value = sql_value + "'"+value_temp+"'";
    									}else if ("D".equals(fieldType)){ //字段类型D表示是登录人的部门
    										//用来验证时候校验
    										value_temp= loginDept;
    										//校验
    										String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    										if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    											//校验能够保存
    											value_temp=item_value[1];
    										}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    											message="导入失败<br/>"+item_value[1];
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										sql_value = sql_value + "'"+value_temp+"'";							
    									}else if ("N".equals(fieldType)){ //字段类型N表示是当前时间
    										sql_value = sql_value + " SYSDATE ";	
    									}else if ("P".equals(fieldType)){ //字段类型P表示是传入參数
    										String excelPara=request.getParameter("param")+"";
    										//用来验证时候校验
    										value_temp= excelPara;
    										//校验
    										String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    										if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    											//校验能够保存
    											value_temp=item_value[1];
    										}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    											message="导入失败<br/>"+item_value[1];
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										sql_value = sql_value + "'"+value_temp+"'";								
    									}else if ("F".equals(fieldType.substring(0,1))){ //外键类型F表示通过插入还有一个表形成外键
    										String fieldExcelCode=excelItem.getFiledExcelcodeConstant();
    										//获得返回值
    										String[] insertFKValue=executeFieldExcelCode(fieldExcelCode,row,param,titleRow,loginCode,loginDept);
    										if(null==insertFKValue){
    											message="导入失败<br/>fieldExcelCode不存在输出值";
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										//假设存在错误返回。结束操作返回 错误信息
    										if(!"1".equals(insertFKValue[0])){
    											message="导入失败<br/>"+insertFKValue[1];
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										//用来验证时候校验
    										value_temp= insertFKValue[1];//获取正确值
    										//校验
    										String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    										if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    											//校验能够保存
    											value_temp=item_value[1];
    										}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    											message="导入失败<br/>"+item_value[1];
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										String type=fieldType.substring(2,fieldType.length());
    										if("I".equals(type)){
    											sql_value = sql_value + ""+value_temp+"";
    										}else if("T".equals(type)){
    											sql_value = sql_value + "TO_DATE('"+value_temp+"','YYYY-MM-DD HH24:MI:SS') ";
    										}else{
    											sql_value = sql_value + "'"+value_temp+"'";
    										}
    									}else if ("C".equals(fieldType.substring(0,1))){ //常量类型
    										//从数据库中获得常量的值
    										value_temp=excelItem.getFiledExcelcodeConstant();
    										//校验
    										String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    										if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    											//校验能够保存
    											value_temp=item_value[1];
    										}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    											message="导入失败<br/>"+item_value[1];
    											request.setAttribute("message",message);
    											request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    											return ;
    										}
    										//获得类型,依据类型推断插入的值类型
    										String type=fieldType.substring(2,fieldType.length());
    										if("I".equals(type)){
    											sql_value = sql_value + ""+value_temp+"";
    										}else if("T".equals(type)){
    											sql_value = sql_value + "TO_DATE('"+value_temp+"','YYYY-MM-DD HH24:MI:SS') ";
    										}else{
    											sql_value = sql_value + "'"+value_temp+"'";
    										}
    									}else {
    										sql_value = sql_value + " :st"+j;
    										//查看序列号
    										if(null!=table_pk&&!"".equals(table_pk)&&!"null".equals(table_pk)){
    											//查询Ep_Sys_Entity_Sequence_No表获得数据
    											QueryParamList para=new QueryParamList();
    											para.addParam("entityType", table_pk);
    											List<EntitySequenceNo> listPk=null;
    											listPk = JPAUtil.load(EntitySequenceNo.class, para, null, null, null, null) ;
    											long pk =listPk.get(0).getMaxNo();
    											//最大值加1
    											String updateSql="update EntitySequenceNo a set a.maxNo=a.maxNo+1 where a.entityType='"+table_pk+"'";
    											JPAUtil.executeUpdate(updateSql);
    											//用来验证时候校验
    											value_temp= (pk+1)+"";
    											//校验
    											String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    											if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    												//校验能够保存
    												value_temp=item_value[1];
    											}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    												message="导入失败<br/>"+item_value[1];
    												request.setAttribute("message",message);
    												request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    												return ;
    											}
    											paramsList.addParam("st"+j, value_temp);
    										}else if(null!=fieldExtend&&!"".equals(fieldExtend)){
    											DropBeanUtil util = new DropBeanUtil() ;
    											int position= getCellPosition(titleRow,excelItem.getFiledName());
    											if(-1!=position){
    												//用来验证时候校验
    												value_temp= this.getValue((Cell) row.getCell(position));
    												String dropName = util.getDropLabel(fieldExtend, value_temp);
    												//校验
    												String[] item_value = checkValue(dropName,insert_validate,row,param,titleRow);
    												if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    													//校验能够保存
    													dropName=item_value[1];
    												}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    													message="导入失败<br/>"+item_value[1];
    													request.setAttribute("message",message);
    													request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    													return ;
    												}
    												paramsList.addParam("st"+j, dropName);
    											}else{
    												message="导入失败<br/>"+message;
    												request.setAttribute("message",message);
    												request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    												return ;
    											}
    										}else{
    											int position= getCellPosition(titleRow,excelItem.getFiledName());
    											if(-1!=position){
    												//用来验证时候校验
    												value_temp= this.getValue((Cell) row.getCell(position));
    												if(null==value_temp){
    													value_temp="";
    												}
    												//校验
    												String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    												if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    													//校验能够保存
    													value_temp=item_value[1];
    												}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    													message="导入失败<br/>"+item_value[1];
    													request.setAttribute("message",message);
    													request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    													return ;
    												}
    												paramsList.addParam("st"+j, value_temp);
    											}else{
    												//假设都没有,推断验证列。假设验证列有方法运行方法
    												if(null!=insert_validate&&!"N".equals(insert_validate)&&!"null".equals(insert_validate.toLowerCase())){
    													//校验
    													String[] item_value = checkValue("",insert_validate,row,param,titleRow);
    													if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    														//校验能够保存
    														value_temp=item_value[1];
    													}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    														message="导入失败<br/>"+item_value[1];
    														request.setAttribute("message",message);
    														request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    														return ;
    													}
    													paramsList.addParam("st"+j, value_temp);
    												}else{
    													message="导入失败<br/>"+"excel未找到有该列("+excelItem.getFiledName()+")";
    													request.setAttribute("message",message);
    													request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    													return ;
    												}
    											}
    										}
    									}
    
    
    								}
    								
    							}
    							//插入数据库
    							String sql="insert into "+sql_table+"("+sql_name+")"+" values("+sql_value+")" ;
    							JPAUtil.executeNativeUpdate(sql,paramsList);
    							//成功导入一掉excel数据
    							count++;
    						}
    			     }
    			 }
    			message="成功导入"+count+"条记录<br/>"+message;
    			request.setAttribute("message","1");
    			request.setAttribute("messagecontext",message);
    			request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    			message="导入失败<br/>"+message;
    			request.setAttribute("message",message);
    			request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
    			
    		}
    	}
    	
    	
    	//解决验证问题、解决值须要又一次计算问题
    	@SuppressWarnings({ "unchecked", "rawtypes" })
    	private String[] checkValue(String excelValue,String insert_validate,Row row,String param ,Row titleRow){
    		try{
    			String[] value=new String[2];
    			if(null!=insert_validate&&!"".equals(insert_validate)&&!"N".equals(insert_validate)){
    		
    				String classPath="com.haiyisoft.cc.util.util.ExcelCheckMethod";
    				Class cl = Class.forName(classPath);
    				Method method = cl.getMethod(insert_validate, String.class,String.class,Row.class,Row.class);
    				//採用实例化一个对象,相应的方法中spring将不起作用必须用new
    				//假设返回数据为数组   第一位 1通过。               0验证失败
    				//                  第二位  返回正确值       失败的原因
    				ExcelCheckMethod excelMethod=new ExcelCheckMethod();
    				value=(String[])method.invoke(excelMethod,excelValue,param,row,titleRow);
    				return value;
    			}
    			return null;
    		}catch(Exception e){
    			LogUtil.getLogger().error("验证出现异常");
    			return null;
    		}
    	}
    	
    	
    	//得到filed_name在excel是第几列
    	private int getCellPosition(Row titleRow,String name){
    		int num=-1;
    		if(null==name||"null".equals(name)||"".equals(name)||"NULL".equals(name)){
    			return num;
    		}
    		for (int i = 0; i < titleRow.getLastCellNum(); i++) {
    			String title=titleRow.getCell(i).getStringCellValue();
    			if(name.trim().equals(title.trim())){
    				return i;
    			}
    		}
    		LogUtil.getLogger().error("无法找到列:"+name);
    		return num;
    	}
    	
    	 /* 推断是xls文件还是xlsx文件  */
    	public Workbook createWorkBook(InputStream is,String name) throws IOException{    
    		if(name.toLowerCase().endsWith("xls")){ 
    			return new HSSFWorkbook(is);  
    			} 
    		if(name.toLowerCase().endsWith("xlsx")){  
    			return new XSSFWorkbook(is); 
    			}    
    		return null; 
    	}
    	
    	
    	
    	//解决excel类型问题,获得数值
    	public  String getValue(HSSFCell cell) {
    		String value = "";
    		if(null==cell){
    			return value;
    		}
    		switch (cell.getCellType()) {
    		 	//数值型
    	  		case HSSFCell.CELL_TYPE_NUMERIC:
    	  			if (HSSFDateUtil.isCellDateFormatted(cell)) {
    				    //假设是date类型则 ,获取该cell的date值
    	  				Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
    	  				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    				    value = format.format(date);;
    	  			}else {// 纯数字
    	  				BigDecimal big=new BigDecimal(cell.getNumericCellValue());
    	  				value = big.toString();
    	  				//解决1234.0  去掉后面的.0
    	  				if(null!=value&&!"".equals(value.trim())){
    	  				     String[] item = value.split("[.]");
    	  				     if(1<item.length&&"0".equals(item[1])){
    	  				    	 value=item[0];
    	  				     }
    	  				}
    	  			}
    	  			break;
    	  			//字符串类型 
    	  		case HSSFCell.CELL_TYPE_STRING:
    	  			value = cell.getStringCellValue().toString();
    	  			break;
    	  		// 公式类型
    	  		case HSSFCell.CELL_TYPE_FORMULA:
    	  			//读公式计算值
    	  			value = String.valueOf(cell.getNumericCellValue());
    	  			if (value.equals("NaN")) {// 假设获取的数据值为非法值,则转换为获取字符串
    	  				value = cell.getStringCellValue().toString();
    	  			}
    	  			break;
    	  		// 布尔类型
    	  		case HSSFCell.CELL_TYPE_BOOLEAN:
    	  			value = " "+ cell.getBooleanCellValue();
    	  			break;
    	  		// 空值
    	  		case HSSFCell.CELL_TYPE_BLANK: 
    	  			value = "";
    	  			LogUtil.getLogger().error("excel出现空值");
    	  			break;
    	  		// 故障
    	  		case HSSFCell.CELL_TYPE_ERROR: 
    	  			value = "";
    	  			LogUtil.getLogger().error("excel出现问题");
    	  			break;
    	  		default:
    	  			value = cell.getStringCellValue().toString();
    		}
    		if("null".endsWith(value.trim())){
    			value="";
    		}
    	  return value;
    	}
    
    	//解决excel类型问题。获得数值
    	public  String getValue(Cell cell) {
    		String value = "";
    		if(null==cell){
    			return value;
    		}
    		switch (cell.getCellType()) {
    	 	//数值型
      		case Cell.CELL_TYPE_NUMERIC:
      			if (HSSFDateUtil.isCellDateFormatted(cell)) {
    			    //假设是date类型则 ,获取该cell的date值
      				Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
      				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			    value = format.format(date);;
      			}else {// 纯数字
      				BigDecimal big=new BigDecimal(cell.getNumericCellValue());
      				value = big.toString();
      				//解决1234.0  去掉后面的.0
      				if(null!=value&&!"".equals(value.trim())){
      				     String[] item = value.split("[.]");
      				     if(1<item.length&&"0".equals(item[1])){
      				    	 value=item[0];
      				     }
      				}
      			}
      			break;
      			//字符串类型 
      		case Cell.CELL_TYPE_STRING:
      			value = cell.getStringCellValue().toString();
      			break;
      		// 公式类型
      		case Cell.CELL_TYPE_FORMULA:
      			//读公式计算值
      			value = String.valueOf(cell.getNumericCellValue());
      			if (value.equals("NaN")) {// 假设获取的数据值为非法值,则转换为获取字符串
      				value = cell.getStringCellValue().toString();
      			}
      			break;
      		// 布尔类型
      		case Cell.CELL_TYPE_BOOLEAN:
      			value = " "+ cell.getBooleanCellValue();
      			break;
      		// 空值
      		case Cell.CELL_TYPE_BLANK: 
      			value = "";
      			LogUtil.getLogger().error("excel出现空值");
      			break;
      		// 故障
      		case Cell.CELL_TYPE_ERROR: 
      			value = "";
      			LogUtil.getLogger().error("excel出现问题");
      			break;
      		default:
      			value = cell.getStringCellValue().toString();
    	}
    	if("null".endsWith(value.trim())){
    		value="";
    	}
      return value;
    	}
    	
    	//通过关联excelcode插入表数据,并返回输出的值
    	public String[] executeFieldExcelCode(String fieldExcelCode,Row row,String param,Row titleRow,String loginCode,String loginDept){
    		//返回的值
    		String[] value= new String[2];
    		//获得数据库中的excel配置
    		QueryParamList params = new QueryParamList();
    		params.addParam("excelCode", fieldExcelCode);
    		SortParamList sortParams = new SortParamList();
    		sortParams.addParam("excelIntoTable", SortParam.SORT_TYPE_ASCENDING);
    		sortParams.addParam("filedOrder", SortParam.SORT_TYPE_ASCENDING);
    		List<CcExcel> list = JPAUtil.load(CcExcel.class,params, null, null, sortParams, null);
    		String sql_name="";
    		String sql_value="";
    		String sql_table="";
    		String message="";
    		
    		QueryParamList paramsList=null;
    		int fieldCount=1;
    		for (int j = 0; j < list.size(); j++) {
    			CcExcel excelItem = list.get(j);
    			if(j==0){
    				//获取数据库表明
    				sql_table=excelItem.getExcelIntoTable();
    				paramsList=new QueryParamList();
    			}
    			//解决多表插入问题
    			if(!sql_table.equals(excelItem.getExcelIntoTable())){
    				//假设表不一样,先插入一个
    				String sql="insert into "+sql_table+"("+sql_name+")"+" values("+sql_value+")" ;
    				JPAUtil.executeNativeUpdate(sql,paramsList);
    				//重置条件
    				sql_table=excelItem.getExcelIntoTable();
    				sql_name="";
    				sql_value="";
    				fieldCount=1;
    				paramsList=new QueryParamList();
    			}
    			//插入的类型
    			String fieldType =excelItem.getFiledType();
    			//外部属性
    			String fieldExtend=excelItem.getFiledExtend();
    			//序列号
    			String table_pk=(excelItem.getTablePk()+"").trim();
    			//是否须要验证,N不验证  方法名
    			String insert_validate=(excelItem.getFiledValidate()+"").trim();
    			
    			//字段名
    			if(null!=excelItem.getFiledCode()&&!"".equals(excelItem.getFiledCode())){
    				if(1!=fieldCount){
    					sql_name+=",";
    					//列值占位
    					sql_value+=",";
    				}
    				fieldCount++;
    				sql_name+=excelItem.getFiledCode();
    				
    				String value_temp="";
    				//设置字段值
    				if ("T".equals(fieldType)){  //字段类型T表示是时间类型
    					sql_value = sql_value+ "TO_DATE(:dt"+j+",'YYYY-MM-DD HH24:MI:SS') ";
    					int position= getCellPosition(titleRow,excelItem.getFiledName());
    					if(-1!=position){
    						//用来验证时候校验
    						value_temp= this.getValue((Cell) row.getCell(position));
    						//校验
    						String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    						if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    							//校验能够保存
    							value_temp=item_value[1];
    						}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    							com.haiyisoft.ep.log.LogUtil.getAppLoger().error("导入失败,"+item_value[1]);
    							value[0]="0";
    							value[1]=item_value[1];
    							return value;
    						}
    						//假设是返回值 
    						if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    							value[0]="1";
    							value[1]=value_temp;
    						}
    						paramsList.addParam("dt"+j, value_temp);
    					}else{
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error("导入失败,excel未找到有该列("+excelItem.getFiledName()+")");
    						value[0]="0";
    						value[1]="excel未找到有该列("+excelItem.getFiledName()+")";
    						return value;
    					}
    				}else if ("I".equals(fieldType)){ //字段类型I表示是数字类型
    					sql_value = sql_value + "TO_NUMBER(:pk"+j+") ";
    					//查看序列号
    					if(null!=table_pk&&!"".equals(table_pk)&&!"null".equals(table_pk)){
    						//查询Ep_Sys_Entity_Sequence_No表获得数据
    						QueryParamList para=new QueryParamList();
    						para.addParam("entityType", table_pk);
    						List<EntitySequenceNo> listPk = JPAUtil.load(EntitySequenceNo.class, para, null, null, null, null) ;
    						long pk =listPk.get(0).getMaxNo();
    						//最大值加1
    						String updateSql="update EntitySequenceNo a set a.maxNo=a.maxNo+1 where a.entityType='"+table_pk+"'";
    						JPAUtil.executeUpdate(updateSql);
    						//用来验证时候校验
    						value_temp= (pk+1)+"";
    						//校验
    						String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    						if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    							//校验能够保存
    							value_temp=item_value[1];
    						}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    							message="导入失败<br/>"+item_value[1];
    							com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    							value[0]="0";
    							value[1]=item_value[1];
    							return value;
    						}
    						//假设是返回值 
    						if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    							value[0]="1";
    							value[1]=value_temp;
    						}
    						paramsList.addParam("pk"+j, value_temp);
    					}else if(null!=fieldExtend&&!"".equals(fieldExtend)){
    						DropBeanUtil util = new DropBeanUtil() ;
    						int position= getCellPosition(titleRow,excelItem.getFiledName());
    						if(-1!=position){
    							//用来验证时候校验
    							value_temp= this.getValue((Cell) row.getCell(position));
    							String dropName = util.getDropLabel(fieldExtend, value_temp);
    							//校验
    							String[] item_value = checkValue(dropName,insert_validate,row,param,titleRow);
    							if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    								//校验能够保存
    								dropName=item_value[1];
    							}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    								message="导入失败<br/>"+item_value[1];
    								com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    								value[0]="0";
    								value[1]=item_value[1];
    								return value;
    							}
    							//假设是返回值 
    							if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    								value[0]="1";
    								value[1]=dropName;
    							}
    							paramsList.addParam("pk"+j, Integer.valueOf(dropName));
    						}else{
    							message="导入失败<br/>"+message;
    							com.haiyisoft.ep.log.LogUtil.getAppLoger().error("excel未找到有该列("+excelItem.getFiledName()+")");
    							value[0]="0";
    							value[1]="excel未找到有该列("+excelItem.getFiledName()+")";
    							return value;
    						}
    					}else{
    						int position= getCellPosition(titleRow,excelItem.getFiledName());
    						if(-1!=position){
    							//用来验证时候校验
    							value_temp= this.getValue((Cell) row.getCell(position));
    							//校验
    							String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    							if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    								//校验能够保存
    								value_temp=item_value[1];
    							}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    								message="导入失败<br/>"+item_value[1];
    								com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    								value[0]="0";
    								value[1]=item_value[1];
    								return value;
    							}
    							//假设是返回值 
    							if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    								value[0]="1";
    								value[1]=value_temp;
    							}
    							paramsList.addParam("pk"+j, value_temp);
    						}else{
    							message="导入失败<br/>"+message;
    							com.haiyisoft.ep.log.LogUtil.getAppLoger().error("excel未找到有该列("+excelItem.getFiledName()+")");
    							value[0]="0";
    							value[1]="excel未找到有该列("+excelItem.getFiledName()+")";
    							return value;
    						}
    					}
    				}
    				else if ("A".equals(fieldType)){ //字段类型A表示是登录人员帐号
    					//用来验证时候校验
    					value_temp= loginCode;
    					//校验
    					String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    					if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    						//校验能够保存
    						value_temp=item_value[1];
    					}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    						message="导入失败<br/>"+item_value[1];
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=item_value[1];
    						return value;
    					}
    					//假设是返回值 
    					if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    						value[0]="1";
    						value[1]=value_temp;
    					}
    					sql_value = sql_value + "'"+value_temp+"'";
    				}else if ("D".equals(fieldType)){ //字段类型D表示是登录人的部门
    					//用来验证时候校验
    					value_temp= loginDept;
    					//校验
    					String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    					if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    						//校验能够保存
    						value_temp=item_value[1];
    					}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    						message="导入失败<br/>"+item_value[1];
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=item_value[1];
    						return value;
    					}
    					//假设是返回值 
    					if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    						value[0]="1";
    						value[1]=value_temp;
    					}
    					sql_value = sql_value + "'"+value_temp+"'";							
    				}else if ("N".equals(fieldType)){ //字段类型N表示是当前时间
    					sql_value = sql_value + " SYSDATE ";	
    				}else if ("P".equals(fieldType)){ //字段类型P表示是传入參数
    					String excelPara=param;
    					//用来验证时候校验
    					value_temp= excelPara;
    					//校验
    					String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    					if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    						//校验能够保存
    						value_temp=item_value[1];
    					}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    						message="导入失败<br/>"+item_value[1];
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=item_value[1];
    						return value;
    					}
    					//假设是返回值 
    					if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    						value[0]="1";
    						value[1]=value_temp;
    					}
    					sql_value = sql_value + "'"+value_temp+"'";								
    				}else if ("F".equals(fieldType.substring(0,1))){ //外键类型F表示通过插入还有一个表形成外键
    					String fieldExcelCode2=excelItem.getFiledExcelcodeConstant();
    					//获得返回值
    					String[] insertFKValue=executeFieldExcelCode(fieldExcelCode2,row,param,titleRow,loginCode,loginDept);
    					if(null==insertFKValue){
    						message="导入失败<br/>fieldExcelCode配置导入一次";
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=message;
    						return value;
    					}
    					//假设存在错误返回。结束操作返回 错误信息
    					if(!"1".equals(insertFKValue[0])){
    						message="导入失败<br/>"+insertFKValue[1];
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=message;
    						return value;
    					}
    					//用来验证时候校验
    					value_temp= insertFKValue[1];//获取正确值
    					//校验
    					String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    					if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    						//校验能够保存
    						value_temp=item_value[1];
    					}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    						message="导入失败<br/>"+item_value[1];
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=item_value[1];
    						return value;
    					}
    					//假设是返回值 
    					if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    						value[0]="1";
    						value[1]=value_temp;
    					}
    					String type=fieldType.substring(2,fieldType.length());
    					if("I".equals(type)){
    						sql_value = sql_value + ""+value_temp+"";
    					}else if("T".equals(type)){
    						sql_value = sql_value + "TO_DATE('"+value_temp+"','YYYY-MM-DD HH24:MI:SS') ";
    					}else{
    						sql_value = sql_value + "'"+value_temp+"'";
    					}							
    				}else if ("C".equals(fieldType.substring(0,1))){ //常量类型
    					//从数据库中获得常量的值
    					value_temp=excelItem.getFiledExcelcodeConstant();
    					//校验
    					String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    					if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    						//校验能够保存
    						value_temp=item_value[1];
    					}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    						message="导入失败<br/>"+item_value[1];
    						com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    						value[0]="0";
    						value[1]=item_value[1];
    						return value;
    					}
    					//获得类型,依据类型推断插入的值类型
    					String type=fieldType.substring(2,fieldType.length());
    					if("I".equals(type)){
    						sql_value = sql_value + ""+value_temp+"";
    					}else if("T".equals(type)){
    						sql_value = sql_value + "TO_DATE('"+value_temp+"','YYYY-MM-DD HH24:MI:SS') ";
    					}else{
    						sql_value = sql_value + "'"+value_temp+"'";
    					}
    					//假设是返回值 
    					if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    						value[0]="1";
    						value[1]=value_temp;
    					}
    				}else {
    					sql_value = sql_value + " :st"+j;
    					//查看序列号
    					if(null!=table_pk&&!"".equals(table_pk)&&!"null".equals(table_pk)){
    						//查询Ep_Sys_Entity_Sequence_No表获得数据
    						QueryParamList para=new QueryParamList();
    						para.addParam("entityType", table_pk);
    						List<EntitySequenceNo> listPk = JPAUtil.load(EntitySequenceNo.class, para, null, null, null, null) ;
    						long pk =listPk.get(0).getMaxNo();
    						//最大值加1
    						String updateSql="update EntitySequenceNo a set a.maxNo=a.maxNo+1 where a.entityType='"+table_pk+"'";
    						JPAUtil.executeUpdate(updateSql);
    						//用来验证时候校验
    						value_temp= (pk+1)+"";
    						//校验
    						String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    						if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    							//校验能够保存
    							value_temp=item_value[1];
    						}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    							message="导入失败<br/>"+item_value[1];
    							com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    							value[0]="0";
    							value[1]=item_value[1];
    							return value;
    						}
    						//假设是返回值 
    						if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    							value[0]="1";
    							value[1]=value_temp;
    						}
    						paramsList.addParam("st"+j, value_temp);
    					}else if(null!=fieldExtend&&!"".equals(fieldExtend)){
    						DropBeanUtil util = new DropBeanUtil() ;
    						int position= getCellPosition(titleRow,excelItem.getFiledName());
    						if(-1!=position){
    							//用来验证时候校验
    							value_temp= this.getValue((Cell) row.getCell(position));
    							String dropName = util.getDropLabel(fieldExtend, value_temp);
    							//校验
    							String[] item_value = checkValue(dropName,insert_validate,row,param,titleRow);
    							if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    								//校验能够保存
    								dropName=item_value[1];
    							}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    								message="导入失败<br/>"+item_value[1];
    								com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    								value[0]="0";
    								value[1]=item_value[1];
    								return value;
    							}
    							//假设是返回值 
    							if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    								value[0]="1";
    								value[1]=dropName;
    							}
    							paramsList.addParam("st"+j, dropName);
    						}else{
    							message="导入失败<br/>"+message;
    							com.haiyisoft.ep.log.LogUtil.getAppLoger().error("excel未找到有该列("+excelItem.getFiledName()+")");
    							value[0]="0";
    							value[1]="excel未找到有该列("+excelItem.getFiledName()+")";
    							return value;
    						}
    					}else{
    						int position= getCellPosition(titleRow,excelItem.getFiledName());
    						if(-1!=position){
    							//用来验证时候校验
    							value_temp= this.getValue((Cell) row.getCell(position));
    							if(null==value_temp){
    								value_temp="";
    							}
    							//校验
    							String[] item_value = checkValue(value_temp,insert_validate,row,param,titleRow);
    							if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    								//校验能够保存
    								value_temp=item_value[1];
    							}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    								message="导入失败<br/>"+item_value[1];
    								com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    								value[0]="0";
    								value[1]=item_value[1];
    								return value;
    							}
    							//假设是返回值 
    							if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    								value[0]="1";
    								value[1]=value_temp;
    							}
    							paramsList.addParam("st"+j, value_temp);
    						}else{
    							//假设都没有,推断验证列,假设验证列有方法运行方法
    							if(null!=insert_validate&&!"N".equals(insert_validate)){
    								//校验
    								String[] item_value = checkValue("",insert_validate,row,param,titleRow);
    								if(null!=item_value&&0!=item_value.length&&"1".equals(item_value[0])){
    									//校验能够保存
    									value_temp=item_value[1];
    								}else if(null!=item_value&&0!=item_value.length&&"0".equals(item_value[0])){
    									message="导入失败<br/>"+item_value[1];
    									com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    									value[0]="0";
    									value[1]=item_value[1];
    									return value;
    								}
    								//假设是返回值 
    								if("Y".equals(excelItem.getFiledExcelcodeIsreturn())){
    									value[0]="1";
    									value[1]=value_temp;
    								}
    								paramsList.addParam("st"+j, value_temp);
    							}else{
    								message="导入失败<br/>"+message;
    								com.haiyisoft.ep.log.LogUtil.getAppLoger().error(message);
    								value[0]="0";
    								value[1]="excel未找到有该列("+excelItem.getFiledName()+")";
    								return value;
    							}
    						}
    					}
    				}
    
    
    			}
    			
    		}
    		//插入数据库
    		String sql="insert into "+sql_table+"("+sql_name+")"+" values("+sql_value+")" ;
    		JPAUtil.executeNativeUpdate(sql,paramsList);
    		return value;
    	}
    }
    



  • 相关阅读:
    Paint类的介绍
    缓存淘汰算法之LRU
    Android SurfaceView实战 打造抽奖转盘
    android中scrollTo和scrollBy的理解
    Android View.onMeasure方法的理解
    Android Context 上下文 你必须知道的一切
    Android Animation简述
    Markdown 语法说明
    理解Java虚拟机体系结构
    Java集合框架:HashMap
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6943571.html
Copyright © 2020-2023  润新知