`
uule
  • 浏览: 6351605 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

导入Excel并保存到数据库

 
阅读更多

Excel模版(注意每行是三行合并的):

 

先将Excel文件上传到服务器,然后展示到页面上,再点击“保存到数据库”实现插入数据库

1、先导入

上传控件为uploadxls.js

上传调用方法为purcharseUpload.js中的importFile()方法

上传请求为purchaseUpload.js中initUpload()方法中的serverUrl

前台页面文本框saveFile展示上传后的文件路径

 

前台:

<input type="text" id="saveFile" name="saveFile" value=${filePath!} >
<a href="javascript:void(0);" onclick="importFile();" style="color:black;">导入订单</a>
<input type="button" id="btnSave" class="user_submit3" name="btnSave" onclick="save2db()" value="保存到数据库" />

 

上传方法(文件purchseUpload.js):

var globalUpload = "";

function importFile(){
	//pwidth = '150';
	//pheight = '150';
	$("#btnSave").show();
	$("#dialog-modal").dialog("open");
	initUpload();
    return false;
}


//上传组件的初始化操作
function initUpload() {
	if($('#popUploadFlash').length==0){
         $("#shopDesignLogo").after("<div id='popUploadFlash'></div>");
    }

	var pwidth,pheight;
	
		//pwidth = '150';
		//pheight = '150';

    var uploadParameter = {
        //以下为必须要的
        'serverUrl': '/fileUpload',   //服务器端脚本的位置
        'flashUrl': '/js/uploadnew/swfupload.swf',   //上传flash的位置
        'uploadButtonUrl': '/js/uploadnew/XPButtonUploadText_61x22.png', //flash上传按钮图片的位置
        'uploadContainer': 'popUploadFlash',  //在页面中用来放上传flash的容器
        'uploadFun': 'uploadBack',  //上传成功后执行的函数
        'appNum': 'selleck',  //App编号
        'imageResizeList': '1000X1000', //截图尺寸
        //'picWidth' : pwidth,
        //'picHeigth' : pheight,
        'uploadFirst': true,  //是否先上传,如果是的话,上传框将附带上传按钮,否则不带
        //以下为非必须选项
        'uploadFrameLength': '200' //整个上传框的长度
    };
    loadUploadFlash(uploadParameter);
    $("#popUploadFlash").attr("style","float:left;");
}

//上传后的回调函
function uploadBack(serverData) {
	if(serverData.content == "ok"){
		var saveFile = serverData.path;
		$("#saveFile").attr("value" , saveFile);
		
		//上传成功后将数据显示在前台
		window.location.href = "/purchase/importOrder.do?saveFile=" + saveFile;		
		
	}
	
	var src=serverData.path;
	
	if(serverData.ret == 'false'){
		alert(serverData.content);
	}else{
		exportData(src);
	    $("#dialog-modal").dialog("close");
	}
	initUpload(globalUpload);    //重新生成一个上传组件
}

 

进入前台请求:

<action name="toImportOrder" class="com.PurchaseOrderAction" method="toImportOrder">
	<result name="success" type="freemarker" >/WEB-INF/ftl/purchase/importOrderList.ftl</result>
</action>
				
<!-- 导入订单并显示 -->
<action name="importOrder" class="com.PurchaseOrderAction" method="importOrder">
	<result name="success" type="freemarker" >/WEB-INF/ftl/purchase/importOrderList.ftl</result>
</action>

 

前台页面importOrderList.ftl:(默认页面和上传后展示页面为同一个)

<script type="text/javascript">
$(function(){
	 $("#dialog-modal").dialog({
			autoOpen: false,
			height: 140,
			modal: true
		})
})
</script>        

<div id="man_zone">         
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td class="STYLE1">
            <input type="text" id="saveFile" name="saveFile" value=${filePath!} >
		        	<a href="javascript:void(0);" onclick="importFile();" style="color:black;">导入订单</a>
		        	<input type="button" id="btnSave" class="user_submit3" name="btnSave" onclick="save2db()" value="保存到数据库" />
        </td>
      </tr>
    </table>
    <td>
  </tr>
  <!---结果----->
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0"  class="rk_table">
      <tr>
        <td>
        <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="eef1fc">
          <tr align="center" background="../images/tab_bg.png" class="STYLE1" height="22">
          	<th>序号</th>
            <th >采购单号 </th>
            <th >运费 </th>
            <th>采购日期</th>
            <th >预计到货时间</th>
            <th>下单时间</th>
            <th>商品编号</th>
            <th>商品名称</th>
            <th >订购数量</th>
            <th >商品单价</th>
            <th >供应商</th>
            <th >供应商CODE</th>
            <th>手机号码</th>
            <th >省</th>
            <th >市</th>
            <th >县</th>
            <th >详细地址</th>
            <th >订单备注</th>
            <th >采购员</th>
            <th >采购员电话</th>
          </tr>
       	 <#if cdosOrder?exists>
				<#list cdosOrder as item>
	              <tr bgcolor="#FFFFFF" style="text-align:center;" class="importTr">
<td width="2%" style="word-break:break-all">${item_index + 1}</td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='0'/></td>
<td width="3%" style="word-break:break-all"><@getStringValue cdo=item col='1'/></td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='2'/></td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='3'/></td>
<td width="8%" style="word-break:break-all"><@getStringValue cdo=item col='4'/></td>
<td width="8%" style="word-break:break-all"><@getStringValue cdo=item col='5'/></td>
<td width="12%" style="word-break:break-all"><@getStringValue cdo=item col='6'/></td>
<td width="3%" style="word-break:break-all"><@getStringValue cdo=item col='7'/></td>
<td width="3%" style="word-break:break-all"><@getStringValue cdo=item col='8'/></td>
<td width="4%" style="word-break:break-all"><@getStringValue cdo=item col='9'/></td>
<td width="6%" style="word-break:break-all"><@getStringValue cdo=item col='10'/></td>
<td width="3%" style="word-break:break-all"><@getStringValue cdo=item col='11'/></td>
<td width="3%" style="word-break:break-all"><@getStringValue cdo=item col='12'/></td>
<td width="4%" style="word-break:break-all"><@getStringValue cdo=item col='13'/></td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='14'/></td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='15'/></td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='16'/></td>
<td width="5%" style="word-break:break-all"><@getStringValue cdo=item col='17'/></td>
<td style="word-break:break-all"><@getStringValue cdo=item col='18'/></td>
				</tr>
	           </#list>
           <#else>
           		<!-- <tr><td colspan="18"><b>Excel文档中有空行,请检查!</b></td></tr> -->
           </#if>
            
        </table></td>
      </tr>
    </table></td>
  </tr>  
</table>
</div>  
<div id="dialog-modal" title="文件上传" style="display:none;">
	<div class="contant clearfix">
    	<div id="shopDesignLogo"></div>
    	<div class="intr" id="limit" style="width:100%;"></div>
	</div>
</div>     

   

 

后台上传(将数据从Excel中提出然后汇总为cdosOrder数据):

public String toImportOrder(){
		cdosOrder = null;
		return SUCCESS;
	}
	
	/**
	 * 显示上传的订单
	 * @return
	 * @throws Exception
	 */
	public String importOrder() throws Exception{
		cdosOrder = null;      	
		String filePath = request.getParameter("saveFile");
		request.setAttribute("filePath", filePath);
		InputStream is = new FileInputStream(request.getRealPath(filePath));
		HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
		
		// 循环工作表Sheet
		HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
		int rows = hssfSheet.getLastRowNum();
		cdosOrder = new CDO[rows];
		int sheetmergerCount = hssfSheet.getNumMergedRegions();
		
		//org.apache.poi.ss.util.CellRangeAddress
		List<CellRangeAddress> list = new ArrayList<CellRangeAddress>();
		for (int i = 0; i < sheetmergerCount; i++) {
			// 获得合并单元格加入list中			
			CellRangeAddress ca = hssfSheet.getMergedRegion(i);
			list.add(ca);
		}
		
		// 循环行Row
		for (int rowNum = 1; rowNum <= rows; rowNum++) {
			HSSFRow hssfRow = hssfSheet.getRow(rowNum);
			if(hssfRow != null){
				CDO cdoItem = new CDO();
				//循环列
				for (int cellNum = 0; cellNum <= 18; cellNum++) {
					@SuppressWarnings("unused")
					String value = "";
					@SuppressWarnings("unused")
					HSSFCell hssfCell = hssfRow.getCell(cellNum);
					//循环合并的单元格
					for(int i = 0 ; i < sheetmergerCount ; i++)
					{
						CellRangeAddress cr = list.get(i);
						int c = cr.getLastRow() - cr.getFirstRow();
						
						for(int m = c ; m >= 0 ; m--){
							if(rowNum - m == cr.getFirstRow()){
								hssfRow = hssfSheet.getRow(rowNum - m);
							}
							else if(cellNum == 0 || cellNum == 4 || cellNum == 5 || cellNum == 6|| cellNum == 7 || cellNum == 8){
								hssfRow = hssfSheet.getRow(rowNum);
							}
							else{
								hssfRow = hssfSheet.getRow(rowNum);
							}
						}
						
						hssfCell = hssfRow.getCell(cellNum);
					}
					
					if (hssfCell != null) {
						value = getValue(hssfCell);
						
						/*if(cellNum == 1){
							value = e2Conventional(value);
							
							int s = value.indexOf(".");
							value = s == -1 ? value : value.substring(0,s);
						}
						//设定显示格式
						if(!value.trim().isEmpty() && (cellNum == 1 || cellNum == 4 || cellNum == 10)){
							value = e2Conventional(value);
						}
						else if(!value.trim().isEmpty() && (cellNum == 2 || cellNum == 8)){
							value = df.format(Double.parseDouble(value));
						}
						else if(!value.trim().isEmpty() && (cellNum == 7 || cellNum == 15)){
							Float fv = Float.parseFloat(value);
							Integer iv = fv.intValue();
							value = iv.toString();
						}*/
					}
					cdoItem.setStringValue(String.valueOf(cellNum), value.trim());
				}
				cdosOrder[rowNum-1] = cdoItem;
			}
			else{
				cdosOrder = null;
				break;
			}
		}
		
		
		return SUCCESS;
	}

 

 

保存到数据库JS:

function save2db(){
	//判断单价为0,不是售后的订单
	var length = $('.importTr').length;
	for(var i=0;i<length;i++){
		 var price = $(".importTr:eq("+i+") td:eq(9)").text();
		 if(price == '0.00'){
			 if(!confirm('有单价为0的订单,是否确定要提交?')){
				 return false;
			 }
			 break;
		 }
	}
	
	var saveFile = $("#saveFile").val();
	if(saveFile == ""){
		alert("请先选择要导入的Excel文件");
	}else{
		var url = "/purchase/save2db.do";
		var data = "filename=" + $("#saveFile").val();
		doAjax(url,data,success);
	}
}

function success(data){
	if(data == "0"){
		alert("导入并保存成功");
		window.location.href = "/purchase/toImportOrder.do";
	}
	else if(data == "-5"){
		alert("保存失败");
	}
	else{
		alert(data);
	}
}

 

保存到数据库后台(注意合并判断和金额计算):

/**
	 * 保存导入的订单到数据库
	 * @throws Exception 
	 */
	public void save2db() throws Exception{
		
		cdosOrder = null;
		//查询
		String filePath =  request.getParameter("filename");
		request.setAttribute("filePath", filePath);
		InputStream is = new FileInputStream(request.getRealPath(filePath));
		HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
		
		// 循环工作表Sheet
		HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
		int rows = hssfSheet.getLastRowNum();
		cdosOrder = new CDO[rows];
		int sheetmergerCount = hssfSheet.getNumMergedRegions();
		
		List<CellRangeAddress> list = new ArrayList<CellRangeAddress>();
		for (int i = 0; i < sheetmergerCount; i++) {
			// 获得合并单元格加入list中			
			CellRangeAddress ca = hssfSheet.getMergedRegion(i);
			list.add(ca);
		}
		
		// 循环行Row
		for (int rowNum = 1; rowNum <= rows; rowNum++) {
			HSSFRow hssfRow = hssfSheet.getRow(rowNum);
			if(hssfRow != null){
				String nShopId = "";
				CDO cdoItem = new CDO();
				//循环列
				for (int cellNum = 0; cellNum <= 18; cellNum++) {
					String value = "";
					HSSFCell hssfCell = hssfRow.getCell(cellNum);
					//循环合并的单元格
					for(int i = 0 ; i < sheetmergerCount ; i++)
					{
						CellRangeAddress cr = list.get(i);
						int c = cr.getLastRow() - cr.getFirstRow();
						
						for(int m = c ; m >= 0 ; m--){
							if(rowNum - m == cr.getFirstRow()){
								hssfRow = hssfSheet.getRow(rowNum - m);
							}
							else if(cellNum == 5 || cellNum == 6 || cellNum == 7 || cellNum == 8){
								hssfRow = hssfSheet.getRow(rowNum);
							}
						}
						
						hssfCell = hssfRow.getCell(cellNum);
					}
					
					if (hssfCell != null && cellNum < 15) {
						value = getValue(hssfCell).trim();
						
						if(cellNum == 1){
							value = e2Conventional(value);
							
							int s = value.indexOf(".");
							value = s == -1 ? value : value.substring(0,s);
						}
						if((cellNum == 7 || cellNum == 8) && Float.parseFloat(value) < 0.00f){
							String str = "第" + rowNum + "行,第" + cellNum + "列不能为负数";
							ajaxForAction(ServletActionContext.getResponse(),str);
							return;
						}
						
						if(value.equals("")){
							String str = "第" + rowNum + "行,第" + cellNum + "列不能为空";
							ajaxForAction(ServletActionContext.getResponse(),str);
							return;
						}
						
						//设定显示格式
						if(!value.trim().isEmpty() && (cellNum == 0 || cellNum == 5 || cellNum == 10)){
							value = e2Conventional(value);
						}
						else if(!value.trim().isEmpty() && (cellNum == 1 || cellNum == 8)){
							value = df.format(Double.parseDouble(value));
						}
						else if(!value.trim().isEmpty() && cellNum == 7 ){
							Float fv = Float.parseFloat(value);
							Integer iv = fv.intValue();
							value = iv.toString();
						}
					}
					else if(cellNum < 15){
						String str = "第" + rowNum + "行,第" + cellNum + "列不能为空";
						ajaxForAction(ServletActionContext.getResponse(),str);
						return;
					}
					else if (hssfCell != null) {
						value = getValue(hssfCell);
					}
										
					// 导入模板存在商品总价字段,但是与商品单价*数量+运费 不相等。因此导入时去掉商品总价列,由后台计算值
					// 去除商品总价那列的导入,后面逻辑不变
					if(cellNum >= 2){
						int cell = cellNum + 1;
						cdoItem.setStringValue(String.valueOf(cell), value.trim());
					}else{
						cdoItem.setStringValue(String.valueOf(cellNum), value.trim());
					}
				}
				// 运费
				String val2 = cdoItem.getStringValue("1");
				// 商品数量
				int val7 = cdoItem.getIntegerValue("8");
				// 商品单价
				String val8 = cdoItem.getStringValue("9");
				
				Float fval8 = Float.parseFloat(val8);
				Float fval2 = Float.parseFloat(val2);
				
				// 当前行与上一行的订单相同,只算一次运费
				if(rowNum != 1 && cdoItem.getStringValue("0").equals(cdosOrder[rowNum-2].getStringValue("0"))){
					Float fval = fval8 * val7;
					cdoItem.setStringValue("2", fval.toString());
					cdosOrder[rowNum-1] = cdoItem;
				}else{
					Float fval = fval8 * val7 + fval2;
					cdoItem.setStringValue("2", fval.toString());
					cdosOrder[rowNum-1] = cdoItem;
				}
			}
			else{
				cdosOrder = null;
				ajaxForAction(ServletActionContext.getResponse(), "Excel文档的第" + rowNum + "行是空行,请检查。");
				return;
			}
		}
		
		for(int i = 0 ; i < cdosOrder.length ; i++){
			int k = i + 1;
			
			String valueDate = cdosOrder[i].getStringValue("5");
			if(!checkDate(valueDate)){
				String str = "第" + k + "行:下单时间格式应为yyyy-mm-dd hh:mm:ss";
				ajaxForAction(ServletActionContext.getResponse(), str);
				return;
			}
			
			// 上传订单限制只能上传昨天和今天的订单
			Calendar cal = Calendar.getInstance();
			// 今天年月日
			Date date = new Date();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
			SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
			String dateNowStr = sdf1.format(date.getTime());
			
			// 传过来的日期 年月日
			Date compare1 = sdf.parse(valueDate);
			// 传过来的日期 年月日时分秒
			Date compare11 = sdf1.parse(valueDate);
			// 今天 年月日时分秒
			Date compare2 = sdf.parse(dateNowStr);
			
			cal.add(Calendar.DATE,   -1);
			String yesterday = sdf.format(cal.getTime());
			// 昨天 年月日
			Date compare3 = sdf.parse(yesterday);
			
			// 今天的单只能上传当前时间之前的
			/*if(DateUtils.compare(compare1, compare2) == 0 && (DateUtils.compare(compare11, date) != -1)){
				String str = "第" + k + "行:只能上传昨天和当前时间之前的订单";
				ajaxForAction(ServletActionContext.getResponse(), str);
				return;
			}*/
			 // 今天之后的不可上传
			 if(DateUtils.compare(compare11, date) == 1){
				String str = "第" + k + "行:只能上传昨天和当前时间之前的订单";
				ajaxForAction(ServletActionContext.getResponse(), str);
				return;
			}
			// 可以上传昨天的订单
			/*else if(DateUtils.compare(compare1, compare2) != 0 && DateUtils.compare(compare1, compare3) != 0){
				String str = "第" + k + "行:只能上传昨天和当前时间之前的订单";
				ajaxForAction(ServletActionContext.getResponse(), str);
				return;
			}*/
		    
		}

		if(cdosOrder != null){
			for(int m = 0 ; m < cdosOrder.length ; m++){
				String strValueOrderCode = cdosOrder[m].getStringValue("0");				
				cdosOrder[m].setStringValue("0" , "P"+strValueOrderCode);
			}
		}
      //订单号是否存在
		for(int i = 0 ; i < cdosOrder.length ; i++){
			String strCode = cdosOrder[i].getStringValue("0");
			if(checkOrderCode(strCode)){
				ajaxForAction(ServletActionContext.getResponse(),"订单号" + strCode + "已存在。");
				return;
			}
		}
		
		//保存
		cdoRequest.setStringValue(ITransService.TRANSNAME_KEY,"getProductList");
		cdoRequest.setStringValue(ITransService.SERVICENAME_KEY,"purchaseService");
      	Return ret = getServiceBus().handleTrans(cdoRequest, cdoResponse);
      	CDO[] cdosProduct = null;
      	CDO[] cdos = null;
      	
      	if(ret.getCode() == 0){
      		cdosProduct = cdoResponse.getCDOArrayValue("cdosProduct");
      		
      		//验证商品编号是否存在
      		for(int i = 0 ; i < cdosOrder.length ; i++){
      			boolean flag = false;
      			for(CDO cdo : cdosProduct){
      				if(!cdosOrder[i].getStringValue("6").equals(cdo.getStringValue("strProductCode"))){
      					flag = false;
      				}
      				else{
      					flag = true;
      					break;
      				}
      			}

  				if(!flag){
  	      			int k = i + 1;
  					String str = "第" + k + "行:商品编号不存在";
  					ajaxForAction(ServletActionContext.getResponse(), str);
  					return;
  				}
      		}

      		//合并相同订单号
      		HashMap<Integer, CDO> map = new HashMap<Integer, CDO>();
      		int idx = 0;
      		for(int i = 0 ; i < cdosOrder.length ; i++){
      			
      			CDO cdo = cdosOrder[i];
      			if(i != 0 && cdo.getStringValue("0").equals(cdosOrder[i - 1].getStringValue("0"))){
      				String totleMoney1 = cdo.getStringValue("2");
      				String totleMoney2 = cdosOrder[i - 1].getStringValue("2");
      				Float fv1 = Float.parseFloat(totleMoney1);
      				Float fv2 = Float.parseFloat(totleMoney2);
      				Float fv3 = fv1 + fv2;
      				cdo.setStringValue("2", fv3.toString());
      				map.put(idx-1, cdo);
      			}
      			else{
	      			map.put(idx, cdo);
	      			idx ++;
      			}
      		}
      		
      		HashMap<String, String> hashmapPro = new HashMap<String, String>();
      		for(int m = 0 ; m < cdosOrder.length ; m++){
      			String strPC = cdosOrder[m].getStringValue("0");
      			String strProCode = cdosOrder[m].getStringValue("6");
      			String strGoodsTitle = cdosOrder[m].getStringValue("7");
      			String strnPrice = cdosOrder[m].getStringValue("9");
      			String strnCount = cdosOrder[m].getStringValue("8");
      			String strCustomerCode = cdosOrder[m].getStringValue("11");
      			String strlGoodsId = "";
      			String strLogoURL = "";
      			String strBasicUnit = "";
      			String nType = "0";
      			String cusId = "";
      			String cusCode = "";
      			
      			for(CDO product : cdosProduct){
	      			if(cdosOrder[m].getStringValue("6").trim().equals(product.getStringValue("strProductCode").trim())){
	      				strlGoodsId = product.getStringValue("nProductId").trim();
	      				//strLogoURL = product.getStringValue("strLogoURL").trim();
	      				strBasicUnit = product.getStringValue("strBasicUnit").trim();
	      			}
	      			
	      			String nCustomerId = product.getStringValue("nCustomerId");
	      			String customerCode = product.getStringValue("strCustomerCode");
	      			
	      			if(customerCode.trim().equals(strCustomerCode.trim())){
	      				cusId = nCustomerId;
	      				cusCode = strCustomerCode;
	      			}
      			}
				
				StringBuffer strbf = new StringBuffer();
				strbf.append(",{");
				strbf.append("\"lGoodsId\":\"");
				strbf.append(strlGoodsId);
				strbf.append("\",\"strGoodsTitle\":\"");
				strbf.append(strGoodsTitle);
				strbf.append("\",\"nPrice\":\"");
				strbf.append(strnPrice);
				strbf.append("\",\"nCount\":\"");
				strbf.append(strnCount);
				strbf.append("\",\"strProCode\":\"");
				strbf.append(strProCode);
				strbf.append("\",\"nType\":\"");
				strbf.append(nType);
				strbf.append("\",\"strLogoURL\":\"");
				//strbf.append(strLogoURL);
				strbf.append("\"");
				
				strbf.append("\",\"nCustomerId\":\"");
				strbf.append(cusId);
				strbf.append("\",\"strCustomerCode\":\"");
				strbf.append(cusCode);
				strbf.append("\",\"strBasicUnit\":\"");
				strbf.append(strBasicUnit);
				strbf.append("\"");
				
				strbf.append("}");
				strbf.append(",");
      			
      			hashmapPro.put(strPC, (hashmapPro.get(strPC) != null ? hashmapPro.get(strPC) : "") + strbf.toString().substring(0, strbf.toString().length() - 1));
      		}
      		cdos = new CDO[map.size()];
      		for(int i = 0 ; i < map.size() ; i++){
      			CDO cdoOrder = (CDO) map.get(i);
      			cdoOrder.setIntegerValue("nImportUserId", getLoginID());
      			//订单号
      			String strOC = cdoOrder.getStringValue("0");
      			for(int j = 0 ; j < hashmapPro.size() ; j++){
      				String strHMOC = (String) hashmapPro.get(strOC);
      				cdoOrder.setStringValue("31", "[" + strHMOC.substring(1) + "]");
      				
      				CDO[] cdosPro = strJson2CDOAry(strHMOC.substring(1));
      				cdoOrder.setCDOArrayValue("cdosOP", cdosPro);
      				int nGoodsAmount = 0;
      				for(int m = 0 ; m < cdosPro.length ; m++){
      					nGoodsAmount += cdosPro[m].getIntegerValue("nQuantity");
      				}
      				cdoOrder.setIntegerValue("nGoodsAmount", nGoodsAmount);
      			}
      			
      			/*
      			if(cdoOrder.getStringValue("18").trim().equals("普通发票")){
	      			cdoOrder.setStringValue("strNeedreceiptType", "普通发票");
	      			cdoOrder.setStringValue("bNeedreceipt", "0");
      			}
      			else{
      				cdoOrder.setStringValue("strNeedreceiptType", "");
      				cdoOrder.setStringValue("bNeedreceipt", "1");
      			}
      			
      			if(cdoOrder.getStringValue("21").trim().equals("货到付款")){
	      			cdoOrder.setStringValue("21", "BJJD");
      			}
      			else{
      				cdoOrder.setStringValue("21", "");
      			}
      			
      			if(cdoOrder.getStringValue("22").trim().equals("3C店")){
      				cdoOrder.setStringValue("22", "1");
      			}
      			else if(cdoOrder.getStringValue("22").trim().equals("数码店")){
      				cdoOrder.setStringValue("22", "2");
      			}
      			else{
      				cdoOrder.setStringValue("22", "0");
      			}*/
      			
      			cdos[i] = cdoOrder;
      		}
      	}

		cdoRequest.setCDOArrayValue("cdosOrder", cdos);
		cdoRequest.setStringValue(ITransService.TRANSNAME_KEY,"saveOrderList");
      	ret = getServiceBus().handleTrans(cdoRequest, cdoResponse);
      	if(ret.getCode() == 0){
      		ajaxForAction(ServletActionContext.getResponse(),"0");
      	}
      	else{
      		ajaxForAction(ServletActionContext.getResponse(),"-5");
      	}
	}
	
	
	
	@SuppressWarnings("static-access")
	private static String getValue(HSSFCell hssfCell) {
		if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
			return String.valueOf(hssfCell.getBooleanCellValue());
		} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
			return String.valueOf(hssfCell.getNumericCellValue());
		} else {
			return String.valueOf(hssfCell.getStringCellValue());
		}
	}
	
	/**
	 * 科学计数法转普通计数法
	 * @param value
	 * @return
	 */
	private static String e2Conventional(String value){
		BigDecimal db = null;
		try{
			if(!value.startsWith("0")){
				db = new BigDecimal(value);
				value = db.toPlainString();
			}
		}
		catch(Exception e){
			
		}
		
		return value;
	}
	
	/**
	 * 日期格式验证
	 * YYYY-MM-DD hh:mm:ss
	 * @param str
	 * @return
	 */
	private static boolean checkDate(String str){
		boolean flag = false;
		
		if(str.equals("")){
			flag = false;
		}
		else{
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
			try {
				sdf.parse(str);
				flag = true;
			}
			catch (java.text.ParseException e)
			{  
				flag = false;
			} 
		}
		
		return flag;
	}

 。。

 

 

  • 大小: 18.3 KB
  • 大小: 10.2 KB
分享到:
评论

相关推荐

    将Excel文件导入到数据库中或将数据库中文件导出Excel中

    以下将详细介绍如何将Excel文件导入到数据库中,以及如何将数据库中的数据导出到Excel中。 首先,将Excel文件导入数据库通常涉及到以下几个步骤: 1. 数据预处理:在Excel中整理数据,确保格式正确,无错误或缺失...

    c#批量导入excel数据到oracle数据库.rar

    本资源包提供了一个实用的解决方案,即使用C#编程语言批量导入Excel数据到Oracle 11G数据库。以下将详细阐述这个过程涉及的关键知识点。 首先,我们要了解C#。C#是由微软开发的一种面向对象的编程语言,广泛应用于...

    java实现Excel数据导入到数据库

    在Java编程环境中,将Excel数据导入到数据库以及将数据库数据导出到Excel是常见的数据处理需求。本篇文章将深入探讨如何使用Java实现这两个功能,主要涉及的技术栈包括Apache POI库用于操作Excel,以及JDBC(Java ...

    关于Excel的导出,导入,以及数据保存到数据库

    输入查询或选择表,数据将被导入Excel,反之亦然。 3. **使用Power Query(Get & Transform)**:这是Excel 2016及更高版本中的功能,可以方便地从各种数据源导入数据,包括数据库。通过“数据”菜单的“从其他源”...

    VB编写Excel导入到数据库

    VB6操作Excel导入到SQL2000数据库,Excel必须保存成2003的格式

    非常详细的用 java(springmvc+mybatis)实现excel导入功能并且保存到数据库

    "Java实现Excel导入功能并保存到数据库" 以下是根据给定的文件信息生成的相关知识点: 知识点1:Java Web开发框架SpringMVC 在本实例中,使用了SpringMVC框架来实现Web应用程序。SpringMVC是一种基于Java的Web...

    Excel导入到Gridview导入到数据库程序

    ### Excel导入到Gridview再导入到数据库程序解析...通过以上分析,我们可以了解到如何使用ASP.NET技术实现从Excel文件读取数据并将其保存到数据库的整个流程。这对于需要频繁处理Excel文件的企业来说是非常实用的功能。

    C#通过NPOI库操作Excel,并将Excel数据导入Mysql数据库(自动建表)

    内容概要:本资源介绍了如何从利用Npoi库操作Excel,如相关读取单元格、行,介绍了如何对单元格数据格式进行操作,并分享了如何将Datatable数据导入Mysql数据库,方便项目管理。 阅读建议:此资源以如何读取Excel...

    vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码

    标题提到的“vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码”是解决这类问题的一种有效方案。下面将详细介绍这两个过程的关键知识点。 1. Excel数据导入Access: - **数据连接**:...

    SpringBoot开发接口实现excel导入数据并存储在数据库中

    相关博客:https://blog.csdn.net/m0_51197424/article/details/124454553 开发技术:SpringBoot MyBatis MySQL 实现内容:开发接口实现导入Excel数据后,将数据存储到数据库中

    java导入excel到数据库

    以上就是关于“Java导入Excel到数据库”的详细知识点,涵盖了文件路径配置、合并单元格处理、数据库连接、Excel操作和数据导入等多个方面。这个过程需要对Java、数据库操作以及Excel处理有深入理解,才能有效地完成...

    DELPHI 从EXCEL导入到数据库

    导入Excel数据到数据库,首先需要理解Excel文件的结构,然后通过编程语言解析这些数据。在Delphi中,这通常可以通过使用JEDI VCL库(包含对Microsoft Office组件的接口)或者第三方库如TMS Software的Spreadsheet ...

    npoiDLLEXCEL导入到数据库数据表导入到EXCEL

    标题 "npoiDLLEXCEL导入到数据库数据表导入到EXCEL" 涉及到的主要技术是使用NPOI库处理Excel文件,并进行数据的导入与导出操作。NPOI是一个开源的.NET库,它允许开发人员在不依赖Microsoft Office的情况下读写Excel...

    asp中导入excel文件数据到access数据库中程序代码

    ### ASP中导入Excel文件数据到Access数据库 #### 一、项目背景与需求分析 在实际工作中,常常会遇到需要将Excel文件中的数据批量导入到数据库中的场景。例如,对于一个小型的企业管理系统,可能需要用户上传一个...

    excel树形字典,导入数据库

    "Excel树形字典,导入数据库"这个主题就聚焦于如何将结构化的Excel数据,特别是树形结构的数据,有效地整合到数据库系统中。 首先,我们需要理解什么是"树形字典"。在Excel中,树形字典通常指的是通过表格形式表示...

    winforms窗体导入Excel文件到sql数据库中

    在“winforms窗体导入Excel文件到sql数据库中”的场景中,我们通常会使用C#编程语言来实现这一功能。这个过程涉及到几个关键知识点: 1. **WinForms控件**:在WinForms应用中,我们需要创建一个用户界面来与用户...

Global site tag (gtag.js) - Google Analytics