码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-08-20 16:59:00      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

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表示非返回值的字段


三、核心代码

由于本人比较懒,大家就将就着看吧,代码有点多,重要的代码都在这,我就不提取了技术分享,其实后面的代码都是次要的,上面的知道是怎么回事,大家完全可以自己写,自己写的代码以后修改还容易修改,再多说一句:重点在数据库

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;
	}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:

原文地址:http://blog.csdn.net/myfmyfmyfmyf/article/details/47807917

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!