`
shirlly
  • 浏览: 1644425 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

excel数据导入SQLserver,导入后有比较友好的提示

阅读更多
JSP页面代码

<s:form action="" method="post" name="importForm" enctype="multipart/form-data">
						<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" class="info-table">
							<tr>
								<td class="info-left" align="right" width="40%"><font color="red">*</font>请选择导入文件:</td>
								<td class="info-right" align="left">
									<input name="filePath" type="file" size="30">
									<input type="button" name="Submit" value="导入数据" onClick="onSubmit();">
								</td>
							</tr>
							<s:if test="#request.results!=null">
								<tr>
									<td class="info-right" colspan="2">
										成功插入的记录的条数:
										<s:property value="#request.results.get(0)" />
										条
									</td>
								</tr>
								<tr>
									<td class="info-right" colspan="2">
										excel中非法的记录的条数:
										<s:property value="#request.results.get(1)" />
										条
									</td>
								</tr>
								<s:if test="#request.illegalNotes!=null">
									<tr>
										<td class="info-right" colspan="2">
											不合法的记录的字段如下所示:
											<s:iterator value="#request.illegalNotes" status="listStat">
												<li>
													<s:property />
												</li>
											</s:iterator>
										</td>
									</tr>
								</s:if> 
							</s:if>
						</table>
					</s:form>

Action层代码
public String importCarModi()throws SystemException{
		HttpServletRequest  request   = ServletActionContext.getRequest (); 
		List<Integer> results 	      = new ArrayList<Integer>(); 
		List<String> illegalNotes     = new ArrayList<String>();//非法的字段的错误的提示 
		Map    session      = ActionContext.getContext().getSession();
		String operatorCode = (String)session.get(SysConstant.OPERATOR_ID);
		
		log.info("filePath="+filePath);
		if (filePath == null){
			request.setAttribute("tip", "请选择导入的excle的路径");
			return Constants.Dispatcher.TO_IMPORT_DATA;
		}
		try {
			carInsModificationFacade.importCarModi(filePath,results,illegalNotes,operatorCode);    
			request.setAttribute("results", results);
			if (results.get(1)!=0){
				request.setAttribute("illegalNotes", illegalNotes);
			}
			return Constants.Dispatcher.TO_IMPORT_DATA;
		} catch (FacadeException e) { 
			e.printStackTrace();
			throw new SystemException("导入非车险批单信息失败!e.message="+ e.getMessage());
		}
		
	}

Facade层代码
 public void importCarModi(String filePath,List<Integer> results,List<String> illegalNotes,String operatorCode) throws FacadeException{
		 log.info(">>>>>>>>>>根据用户选定的filepath="+filePath+"导入excel文件到数据库开始......"); 
		 int legalPolicyNum   = 0;
		 int illegalPolicyNum = 0; 
		 try{
    		InputStream ExcelResource = new FileInputStream(filePath);
			Workbook ExcelWB = Workbook.getWorkbook(ExcelResource);
			Sheet ExcelRS = ExcelWB.getSheet(0);
			int rows = ExcelRS.getRows(); 
			if (rows > 0) {
				for (int i = 1; i < rows; i++) {// 注意要从第二行开始读取excel中的值
					List<String> illegalStr = new ArrayList<String>();
					CarInsModificationInfo modification = new CarInsModificationInfo(); 
					String modificationCode     = ExcelRS.getCell(1, i).getContents();//批单号
//						log.info("ModificationCode="+ModificationCode);
					if (!StringUtils.isBlank(modificationCode)){
						String  carRegEx   = "\\w{11}(19|20)\\d{2}P\\d{6}";
						boolean isCarIns   = Pattern.compile(carRegEx,Pattern.CASE_INSENSITIVE).matcher(modificationCode).find();
						if (isCarIns) {
							modification.setModificationCode(modificationCode);
							if (illegalStr.size()==0) {//批单号合法,则开始检查该批单号在数据库中是否存在
								if (carInsModificationDAO.checkIsExist("CarInsModificationInfo", "modificationCode", modificationCode)) {
									illegalStr.add("第"+i+"条记录的批单号"+modificationCode+"在数据库中已经存在"); 
								}
							}
						} else {
							illegalStr.add("第"+i+"条记录的批单号:"+modificationCode+"不符合车险批单的规则!");
						}
						
					}else{
						illegalStr.add("第"+i+"条记录的批单号为空,数据库中该字段的为主键,不能为空!");
					}
					String policyCode   = ExcelRS.getCell(0, i).getContents();//保单号
					//检查该保单号在数据库中是否已经存在
					boolean isExist = carInsModificationDAO.checkIsExist("CarInsPolicy", "policyCode", policyCode);
					if (StringUtils.isBlank(policyCode)){ 
						illegalStr.add("第"+i+"条记录中的保单号为空,数据库中该字段不能为空!"); 
					}
					if (!isExist){
						illegalStr.add("第"+i+"条记录中的保单号为:"+policyCode+"在保单表中不存在!"); 
					}
					if (!StringUtils.isBlank(policyCode) && isExist) {
						modification.setPolicyCode(policyCode);
					}
					if (!StringUtils.isBlank(ExcelRS.getCell(2, i).getContents()) && illegalStr.size() == 0){
						String mstateCode  = ExcelRS.getCell(2, i).getContents().substring(1,2);//取出批单状态代码
						modification.setMstateCode(mstateCode);
					} 
					if (!StringUtils.isBlank(ExcelRS.getCell(3, i).getContents())){
						String mtypeCode  = ExcelRS.getCell(3, i).getContents().substring(1,3);//取出批改类型代码
						//要检查这个代码在这个代码表中是否存在
						if(!carInsModificationDAO.codeIsExist("CmodiType",mtypeCode)){
							illegalStr.add("第"+i+"条记录中的批改类型的代码,在代码表中不存在!");
						}else{
						//因为建立了关联,所以要以对象的形式插入
						CmodiType cmodiType = new CmodiType();
						cmodiType.setCode(mtypeCode);
						modification.setCmodiType(cmodiType);
						}
					} 
					if (!StringUtils.isBlank(ExcelRS.getCell(4, i).getContents()) && illegalStr.size() == 0){
						Double insChange   = Double.parseDouble(ExcelRS.getCell(4, i).getContents());   //保费变化
						modification.setInsChange(insChange);
					}  
					if (!StringUtils.isBlank(ExcelRS.getCell(5, i).getContents()) && illegalStr.size() == 0){
						Date   modifyTime = DateFormater.parseStr2DateTime(ExcelRS.getCell(5, i).getContents(),DateFormater.YY_MM_DD);//签单日期
						modification.setModifyTime(modifyTime);
					} 
					if (illegalStr.size() != 0){//如果不为空,则说明该记录中有不规范的字段存在,将其记入非法保单数组 
						illegalPolicyNum++;
						illegalNotes.addAll(illegalStr); //将该记录的非法字段的提示记入非法提示字符串
					}else{//如果为空则说明该记录中的所有的字段都是合法的,将其记入合法的保单对象数组
						legalPolicyNum++;
						modification.setMstateCode("5");//将要可以导入数据库的数据的状态设为有效 
	    				modification.setCreateTime(new Date()); //导入数据的时间和人即为创建记录的时间和人 
	    				modification.setOperatorCode(operatorCode);  
	    				carInsModificationDAO.saveEntity(modification);
					}
				}
				results.add(legalPolicyNum); //成功插入的记录的条数
				results.add(illegalPolicyNum);//非法的记录的条数 
			}
    	}catch (Exception e){
			throw new FacadeException("取出excel数据失败"+e);
		}   
	    log.info(">>>>>>>>>>根据用户选定的filepath="+filePath+"导入excel文件到数据库完成......");
	 }
分享到:
评论

相关推荐

    客户端将Excel导入SQL Server C#源码下载

    在IT行业中,将Excel数据导入SQL Server是一项常见的任务,尤其在数据分析、报表生成以及数据库管理等领域。本资源提供了一个C#编程实现的解决方案,允许用户在客户端直接将Excel文件的数据导入库中。以下是对这个C#...

    C#从excel导入数据到sql server

    本项目标题为“C#从excel导入数据到sql server”,它提供了一个使用C#编程语言解决此类问题的解决方案。下面我们将深入探讨这个话题,了解如何通过C#实现Excel数据到SQL Server的导入。 1. C#编程语言:C#是一种...

    excel数据导入sql工具

    3. **数据导入过程**:Excel数据导入SQL工具通常会提供一个用户友好的界面,用户可以指定Excel文件路径、选择目标数据库和表,甚至配置数据映射。在导入过程中,工具会自动或手动将Excel列与数据库表字段匹配,确保...

    asp.net页面实现Excel数据导入SqlServer

    总的来说,实现"asp.net页面实现Excel数据导入SqlServer"涉及到多个步骤:文件上传、Excel数据读取、数据转换、数据库操作。在这个过程中,我们可以使用ASP.NET的内置控件、.NET的Excel组件、SQLDMO库以及第三方工具...

    dbf文件导入SQL server

    首先,要将DBF文件导入SQL Server,你需要遵循以下步骤: 1. 创建SQL Server数据库表:在SQL Server Management Studio (SSMS) 中,根据DBF文件中的字段定义创建一个新表。表结构应与DBF文件的字段对应,确保数据...

    SQLSERVER表导入EXCEL 小工具

    总的来说,"SQLSERVER表导入EXCEL小工具"是一个方便的桥梁,它利用.NET的Interop技术,有效地将SQL Server的强大数据库功能与Excel的分析和展示能力相结合,为数据处理提供了一个高效且用户友好的解决方案。...

    Delphi实现将数据从Excel中导入到SQL Server

    在将数据从Excel导入SQL Server之前,必须确保两者的数据类型匹配。例如,Excel中的日期/时间字段可能需要转换为SQL Server兼容的格式。此外,还需要处理空值和特殊字符,避免在导入过程中出现错误。 #### 步骤四:...

    excel数据导入到sqlserver2005

    在Excel导入场景下,可以创建一个存储过程来处理批量插入,确保数据正确地被添加到数据库中。存储过程还可以处理错误,进行事务控制,确保数据的一致性。 5. **Struts框架**:Struts是基于MVC(模型-视图-控制器)...

    Excel自定义字段分步导入SQLServer2000 PB9源码

    标题中的“Excel自定义字段分步导入SQLServer2000 PB9源码”涉及到的知识点是使用PowerBuilder 9(PB9)开发的一个应用程序,该应用能够将用户自定义的Excel字段数据逐步导入到SQL Server 2000数据库中。在数据处理...

    Excel数据导入SQL

    总之,Excel数据导入SQL是一个常见的数据迁移任务,通过asp.net+C#的组合,我们可以实现用户友好的Web应用,轻松地将Excel数据导入到SQL数据库,从而更好地管理和分析数据。这个过程需要对数据库操作、文件I/O以及...

    Excel数据导入SQL工具

    1. **数据导入过程**:通常,Excel数据导入SQL工具会提供一个用户友好的界面,用户可以指定要导入的Excel文件路径,选择目标SQL数据库(如MySQL、SQL Server、Oracle等),并设定连接参数(如服务器地址、数据库名、...

    Delphi 从EXCEL文件导入到SQLSERVER数据表中 源码

    标题中的"Delphi 从EXCEL文件导入到SQLSERVER数据表中 源码"指的是一个使用Delphi编程语言编写的程序,该程序能够将数据从Excel文件读取并导入到SQL Server数据库的特定表中。这个过程通常涉及到数据迁移或数据整合...

    excel导入sql数据库

    本文将详细探讨如何将Excel文件导入SQL数据库,以及涉及的相关技术,如C#编程和Visual Studio 2010(VS2010)的使用。 首先,Excel是一款由Microsoft开发的电子表格程序,它允许用户进行数据存储、计算和分析。而...

    Access、SQLServer、Excel三者之间实现导入与导出

    4. Excel到SQL Server导入:使用SSIS包设计数据流任务,或者通过Excel ODBC连接直接在SQL Server Management Studio中导入。 5. SQL Server到Excel导出:利用SSIS包或T-SQL的SELECT INTO OUTFILE命令生成CSV文件,...

    SQL_SERVER数据导入导出工具

    在“SQL_SERVEROV数据导入导出.exe”这个文件中,很可能包含了这样的功能集,提供了一个用户友好的图形化界面,帮助用户快速完成SQL Server数据库的数据导入导出工作。通过这款工具,数据库管理员和开发者可以更高效...

    ASP.NET-[其他类别]Excel导入SQLserver源码.zip

    在这个特定的压缩包中,"ASP.NET-[其他类别]Excel导入SQLserver源码.zip" 提供了一个示例项目,展示了如何将Excel数据导入到SQL Server数据库。这个功能在数据分析、报表生成或批量数据处理等场景中非常常见。 首先...

    EXCEL导入到SQL数据库

    "EXCEL导入到SQL数据库"这个主题涉及到如何将Excel中的数据有效地整合到结构化的SQL Server数据库中,以便进行更高效的数据管理和查询。 首先,让我们详细了解一下Excel。Excel是一款由Microsoft开发的电子表格应用...

    asp.net导入excel文件到sqlserver数据库

    在ASP.NET中,将Excel文件导入到SQL Server数据库是一项常见的数据操作任务,尤其适用于大量数据的批量处理。本文将详细讲解这一过程中的关键步骤、所用技术以及注意事项。 首先,你需要确保你有以下的开发环境: 1...

    Web方式下将数据从 Excel 导入到 SQL Server中遇到的问题及其解决方法

    在Web环境下,将数据从Excel导入到Microsoft SQL Server数据库是一个常见需求,这个过程可能会遇到多种问题。本文将详细介绍这些常见问题,并提供相应的解决方案,最后给出一个用C#实现数据校验和导入功能的程序示例...

    excel数据导入数据库

    总之,Excel数据导入数据库是一个涉及数据预处理、数据库连接、SQL语句构造和执行的过程。在开发中,我们需要考虑数据的完整性和准确性,以及性能优化。对于Web应用,可以结合前端页面实现用户友好的交互,使数据...

Global site tag (gtag.js) - Google Analytics