Java POI Excel的导入

相信很多人之前都做过POI excel的导入 那么我就把我做Excel导入跟大家分享一下

	public Map insertData(String path, String clazz) {
		@SuppressWarnings("rawtypes")
		List list = ReadExcelUtil.getInstance().readExcel(path);
		@SuppressWarnings("rawtypes")
		Map result = new HashMap();
		for (int i = 0; i < list.size(); i++) {
			@SuppressWarnings({ "rawtypes", "unchecked" })
			Map<Integer, HashMap> map = (Map) list.get(i);
			// 遍历
			for (Entry<Integer, HashMap> entry : map.entrySet()) {
				Map imbean = entry.getValue();
				List param = dealData(imbean,entry.getKey());// 数据处理
				result.put(entry.getKey(), param);
//				System.out.println("key = " + entry.getKey() + " and value = "
//						+ entry.getValue());
			}
		}
		return result;
	}

readExcel方法在这

POIFSFileSystem fs = null;;
	 HSSFWorkbook wb = null;
	public  List<Map<Integer,HashMap>> readExcel(String path) {
			List excelRowList = new ArrayList();
		    try {  
		        //同时支持Excel 2003、2007  
//		        File excelFile = new File("/home/zht/test.xls"); //创建文件对象 
		        FileInputStream is = new FileInputStream(path); //文件流  
		        Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的  
		        int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量  
		        //遍历每个Sheet  
		        for (int s = 0; s < sheetCount; s++) {  
		            Sheet sheet = workbook.getSheetAt(s);  
		            int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数  
		            //遍历每一行  
		            for (int r = 3; r < rowCount; r++) {
		            	Map<Integer,HashMap> content =new LinkedHashMap<Integer,HashMap>();
		                Row row = sheet.getRow(r);  
		                int cellCount = row.getPhysicalNumberOfCells(); //获取总列数  
		                //遍历每一列  
		                HashMap rowMap = new HashMap();
		                for (int c = 0; c < cellCount; c++){  
		                    Cell cell = row.getCell(c);  
		                    Integer cellType = cell.getCellType(); 
		                    if(cellType == null){
		                    	break;
		                    }
		                    String cellValue = null;  
		                    switch(cellType) {  
		                        case Cell.CELL_TYPE_STRING: //文本  
		                            cellValue = cell.getStringCellValue();  
		                            break;  
		                        case Cell.CELL_TYPE_NUMERIC: //数字、日期  
		                            if(DateUtil.isCellDateFormatted(cell)) {  
		                                cellValue = fmt.format(cell.getDateCellValue()); //日期型  
		                            }  
		                            else {  
		                                cellValue = String.valueOf(cell.getNumericCellValue()).replace(".0", ""); //数字  
		                            }  
		                            break;  
		                        case Cell.CELL_TYPE_BOOLEAN: //布尔型  
		                            cellValue = String.valueOf(cell.getBooleanCellValue());  
		                            break;  
		                        case Cell.CELL_TYPE_BLANK: //空白  
		                            cellValue = cell.getStringCellValue();  
		                            break;  
		                        case Cell.CELL_TYPE_ERROR: //错误  
		                            cellValue = "错误";  
		                            break;  
		                        case Cell.CELL_TYPE_FORMULA: //公式  
		                            cellValue = "错误";  
		                            break;  
		                        default:  
		                            cellValue = "错误";  
		                    }  
		                    System.out.print(cellValue + "    "); 
		                    rowMap.put(c, cellValue);
		                }
		        		content.put(r, (HashMap) rowMap.clone());
		        		rowMap.clear();
		    			excelRowList.add(content);
		            }  
		        }  
		  
		    }  
		    catch (Exception e) {  
		        e.printStackTrace();  
		    }  
		    return excelRowList;  
	}
可以选择从第几行开始导入 代码中注释已经写的很清楚

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值