`
javawl
  • 浏览: 28086 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java Excel导入数据库

阅读更多
/**
	 * 资产批量入库excel导入
	 * @return
	 */
	public String addBatch() {
		Transaction t=null;
		try {
			t=this.getStockinService().getTransaction();
		} catch (Exception e1) {
			if(t==null){
				this.outJsonError( "事物没有正确启动!");
				return SUCCESS;
			}
		}
		if(t==null){
			this.outJsonError( "事物没有正确启动!");
			return SUCCESS;
		}
		t.begin();
		List list = new ArrayList();
		int count=0,errcount=0,existcount=0;//总记录数,格式错误数,已经导入存在的数
		try {
			HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(stockinFile));
			HSSFSheet aSheet = workbook.getSheetAt(0);
			if (workbook.getSheetAt(0)!= null) {//get the first sheet
				for (int rowNumOfSheet = 2; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
					if (aSheet.getRow(rowNumOfSheet)!=null) {
						HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
						Object[] o = new Object[9];
						count++;
						String value="";
						String msg="";
						for (short cellNumOfRow = 0; cellNumOfRow < 9; cellNumOfRow++) {//aRow.getLastCellNum()
							if (aRow.getCell(cellNumOfRow)!=null) {
								HSSFCell aCell = aRow.getCell(cellNumOfRow);
								value = getCellValue(aCell);
								if(cellNumOfRow == 7){
									try{
										aCell.getDateCellValue();
									}catch(Exception e){
										this.outJsonError("第"+(rowNumOfSheet+1)+"行,第"+(cellNumOfRow+1)+"列巡检时间格式不是有效的日期格式");
									}
									value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(aCell.getDateCellValue());
								}
								o[cellNumOfRow] = Tools.processNull(value.trim()).replaceAll("\\s*", "");
								String relust = CheckImport(String.valueOf(o[cellNumOfRow]),cellNumOfRow,rowNumOfSheet);
								if(!"".equals(relust)){
									this.outJsonError(relust);
									return SUCCESS;
								}
								if (cellNumOfRow == 0) {
									Stockin stk = stockinService.getStockin(String.valueOf(o[cellNumOfRow]));
									if (stk != null) {
										this.outJsonError("第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列资产信息已入库!");
										return SUCCESS;
									}
								}
								if (cellNumOfRow == 1) {
									Register r = stockinService.getRegister(String.valueOf(o[cellNumOfRow]));
									if (r != null) {
										if (r.getMarknum().intValue()<=0) {
											msg = "第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列资产已经全部入库!";
											this.outJsonError(msg);
											return SUCCESS;
										}
										if ("未确认".equals(r.getSstatus())) {
											msg = "第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列资产未审批,请先审批!";
											this.outJsonError(msg);
											return SUCCESS;
										}
									} else {
										msg = "第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列资产未登记,请先登记!";
										this.outJsonError(msg);
										return SUCCESS;
									}
								}
							}
						}
						list.add(rowNumOfSheet-2,o);
					}
				}
				stockinService.saveBatchStockin(list);
				t.commit();
				this.outJsonMessage( "成功入库"+count+"条数据!");
			}
		} catch (Exception e) {
			t.rollback();
			logger.error("添加资产批量入库信息失败!",e);
			this.outJsonError( "添加资产批量入库信息失败!");
		}
		return SUCCESS;
	}
	
	/**  
     * 得到Excel表中的值  
     *  
     * @param hssfCell  
     *            Excel中的每一个格子  
     * @return Excel中每一个格子中的值  
     */ 
     public static String getCellValue(HSSFCell cell) {  
        if ((cell == null) || (HSSFCell.CELL_TYPE_BLANK == cell.getCellType())) {  
            return "";  
        } 
//        else if (HSSFCell.CELL_TYPE_BOOLEAN == cell.getCellType()) {  
//            return String.valueOf(cell.getBooleanCellValue());  
//        } else if (HSSFCell.CELL_TYPE_FORMULA == cell.getCellType()) {  
//            return cell.getCellFormula();  
//        } 
        else if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()) {  //只适用于整数
	        	int cellValue_int = (int)cell.getNumericCellValue();
	        	String cellValue=String.valueOf(cellValue_int);
                return cellValue;  
        } else if (HSSFCell.CELL_TYPE_STRING == cell.getCellType()) {  
            return String.valueOf(cell.getStringCellValue());  
        } else {  
            return String.valueOf(cell.getStringCellValue());  
        }  
  
    }
	
	/**
	 * 校验导入数据的有效性
	 * @param str
	 * @param colnum
	 */
	public String CheckImport(String str,int colnum,int rowNumOfSheet){
		String msg = "";
		if(colnum==0){
			if (!lessThan(str,30)) {
				msg = "第"+ (rowNumOfSheet+1) +"行资产编号的最大长度不应超过30个字符!";
				return msg;
			}
			if(str.equals("")){
				msg = "第"+ (rowNumOfSheet+1) +"行,第"+(colnum+1)+"列不能为空!";
				return msg;
			}
		}
		if(colnum==1){
			if(str.equals(""))
				return "第"+ (rowNumOfSheet+1) +"行,第"+(colnum+1)+"列不能为空!";
		}
		return "";
	}
分享到:
评论

相关推荐

    javaexcel导入数据库.pdf

    由于给定的内容中存在一些OCR识别错误和重复文字,我将基于提供的有效信息,对Java操作Excel并将其数据导入数据库的知识点进行详细说明。为方便理解和执行,我会先修正可能的OCR扫描错误,并排除重复内容,然后详细...

    java excel 读写 java excel 导入数据库

    Java Excel 读写与导入数据库是Java开发中常见的任务,特别是在数据处理和分析场景下。以下将详细讲解这个主题,并提供一些关键知识点。 首先,Java处理Excel文件主要依赖于两个库:Apache POI 和 JExcelAPI。...

    java excel导入数据库

    标题与描述中的“java excel导入数据库”涉及到的关键知识点主要包括Java编程语言、Apache POI库、Excel文件处理以及数据库操作,具体细节如下: ### Java编程语言 Java是一种广泛使用的面向对象的编程语言,由Sun...

    简单Java excel导入数据库 附数据库(mysql)

    这个“简单Java excel导入数据库 附数据库(mysql)”的项目旨在提供一个基础的学习示例,虽然可能存在一些问题,但其主要功能已经实现,能够帮助初学者理解如何操作。 首先,我们要了解涉及的主要技术点: 1. **...

    java excel导入数据库/java excel导入

    struts+hibernate实现excel导入数据库 注意:Excel导入是指读服务器端的数据,也就是说,如果想用客户端的Excel是需要把Excel文件先上传到服务器上的,然后再导入,我也是前几天才发现的。

    javaexcel导入数据库[借鉴].pdf

    JavaExcel 导入数据库知识点 JavaExcel 是一个基于 Java 语言的 Excel 文件处理库,它提供了对 Excel 文件的读取、写入和操作功能。在本文中,我们将探讨如何使用 JavaExcel 将 Excel 文件导入到数据库中。 Java...

    JAVA实现Excel导入数据库

    以上就是使用Java实现Excel数据导入数据库的主要步骤和关键知识点。通过熟练掌握这些技术,你将能够构建出高效且可靠的Excel到数据库导入系统。在实际应用中,还可能需要根据具体需求进行调整和定制,如错误处理、...

    java读取excel数据导入数据库源码

    java读取excel数据导入数据库源码 java读取excel数据导入数据库源码

    java web Excel导入数据库

    综上所述,Java Web中Excel数据导入数据库的过程涉及到文件上传、Excel读取、数据处理和数据库操作等多个技术环节。通过合理选择和使用各种库,我们可以构建高效且可靠的导入系统,满足企业对大量数据处理的需求。在...

    java excel 导入手机号码(包括对手机的验证)

    * 此代码是完成从excel导入电话号码,将正确的电话号码保存到set集合中,因为set集合对于重复的值会覆盖,所以达到了去重复的值的用例,并累计了不正确的电话号码的个数,对电话号码进行了验证有效性。所需要的 dom4...

    java实现excel导入数据库

    在Java编程中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理和分析的场景下。要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库...

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

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

    大数据Excel通过POI导入数据库通用设计方案

    【大数据Excel通过POI导入数据库通用设计方案】 大数据处理中,Excel作为常见的数据交换格式,其导入到数据库的需求频繁出现。为了提高效率并避免重复工作,本方案旨在提供一种通用的Excel导入策略,利用Apache POI...

    java导入excel到数据库

    对于导入数据库,你需要读取Excel数据,将其转换为适合数据库操作的格式,然后通过数据库连接插入数据。 5. **Excel模板**: 提供的Excel模板可能包含了预定义的格式、样式和数据结构,用户可以按照模板填写数据,...

    java实现Excel数据导入到mysql数据库.zip

    在本项目中,需要建立到MySQL数据库的连接,执行INSERT或UPDATE语句,以便将Excel数据导入数据库。如果数据库中已存在相同数据,根据描述,会执行UPDATE操作,这需要在SQL语句中设置条件判断。 对于数据导入,如果...

    excel树形字典,导入数据库

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

    springboot实现将Excel导入数据库

    要实现Excel导入功能,我们首先需要处理Excel文件。在Java中,我们可以使用Apache POI库来操作Excel文件。POI提供了丰富的API,可以读取、写入Excel文件。在本例中,我们需要使用HSSFWorkbook(对于老版本的Excel ....

Global site tag (gtag.js) - Google Analytics