freemarker的excel導入

1.java   action

/**
	 * 信息導入
	 * @return
	 * @throws IOException 
	 */
	@RequestMapping("/importMaterial")
	@ResponseBody
	public String importMineEnterprise(HttpServletRequest request) throws IOException{
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		MultipartFile uploadfile = multipartRequest.getFile("chooseFile");
		String jsonStr = null;
		String pathfile ="";
		String month="";
		try {
			if(uploadfile != null && !"".equals(uploadfile)){
				pathfile = uploadMineEnterprise(request,uploadfile);
				if(pathfile != null && !"".equals(pathfile)){
					Workbook book  =  Workbook.getWorkbook( new  File(pathfile)); 
					//  獲得第一個工作表對象    
			        Sheet sheet  =  book.getSheet( 0 );   
			        //  得到第一列第一行的單元格    
			        int  columnum  =  sheet.getColumns(); //  得到列數    
			        int  rownum  =  sheet.getRows(); //  得到行數   
			        for  ( int  i  =   0 ; i  <  rownum; i ++ ) //  循環進行讀寫    f
			           {   
			        	/*EvnDuty mineEnterprise = new EvnDuty();*/
			        	Materrial mineEnterprise = new Materrial();
			           for  ( int  j  =   0 ; j  <  columnum; j ++ )   {   
			               Cell cell1  =  sheet.getCell(j, i);   
			               String result  =  cell1.getContents();
			              /* if(i==0 && j==0){
			            	   month=result.substring(0, result.indexOf("月")+1); 
			               }*/
			               if(i>=3){//遍歷第一行的表頭 對號入座 
			            	   switch(j){
			            	   case 0: mineEnterprise.setMaterialname(result);//物資名稱
			            		  /* mineEnterprise.setDay(String.valueOf(result));
			            		   String date=month+result+"日";
			            		   SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
			            		   mineEnterprise.setOperatetime(df.parse(date));*/
			            	   
			            	   break;//1
	            	   
			            	  case 1: mineEnterprise.setMaterialtype(result); break;  //類型
			            	   case 2: mineEnterprise.setAlias(result); break; //別名
			            	   case 3: mineEnterprise.setModel(result); break; //規格型號
			            	   case 4: mineEnterprise.setMaterialncnt(Integer.parseInt(result)); break; //物資數量
			            	   case 5: mineEnterprise.setMeasureunit(result); break; //計量單位
			            	   case 6: mineEnterprise.setSecuritylevel(result); break;  //保密等級
			            	   case 7: mineEnterprise.setMaterialdesc(result); break;  //物資描述
			            	   case 8: mineEnterprise.setNotes(result); break;  //備註			
			            	   case 9: mineEnterprise.setLongitude(Float.parseFloat(result)); break;  //經度			
			            	   case 10: mineEnterprise.setLatitude(Float.parseFloat(result)); break;  //緯度			
			            	   case 11: mineEnterprise.setOrgid(result); break;  //主管部門			
		            	   }
			               }
			           } 
			           if(i>=3){
			        	   //判斷minename在數據庫中是否存在
			        	   String oid = UUID.randomUUID().toString().replaceAll("-", "");
			        	   mineEnterprise.setOid(oid);
			        	   mineEnterprise.setAdd_time(new Date());
			        	   String userid = UserSession.getCurrentUserId();
			        	   mineEnterprise.setAdd_user_id(userid);
			        	   String visaldept = UserSession.getCurrentOrgId();
			        	   String orgName = UserSession.getCurrentOrgName();
			        	   mineEnterprise.setAdd_visaldept_id(visaldept);
			        	   mineEnterprise.setAdd_user_name(orgName);
			        	   excelImportService.saveMaterial(mineEnterprise);
			           }
			       }
				}
			}	
	        jsonStr = "{\"data\":\"success\"}";
		} catch (Exception e) {
			
		} finally{
			File f = new File(pathfile);
			if(f.exists())
			    f.delete();
		}
		return jsonStr;
	}

2.實體類 getter和setter方法補全

@Table(name = "TB_BAS_MATERIAL")
public class Materrial {
	@Id
	  private String  oid;
	  private String  materialname;
	  private String  materialtype;
	  private String  model;
	  private Integer materialncnt;
	  private String  materialdesc;
	  private String  securitylevel;
	  private String  measureunit;
	  private String  notes ;
	  private String  alias;
	  private String  orgid;
	  private Date add_time;
	  private String  add_user_id;
	  private String add_visaldept_id;
	  private String is_dele ;
	  private Date update_time;
	  private String up_user_id ;
	  private String up_visaldept_id;
	  private String add_user_name;
	  private Float longitude ;	//經度
	  private Float latitude;	//緯度
	  private String qywyh;
}

3.excel模板

應急救援物資

注意事項:需要確保表內數據在系統上能正常填報,再進行批量操作 !!!本文件爲Microsoft excel 2003 .xl件                                                                                   

注意事項:部分內容在系統上爲選項形式,本表中內容應與其一致,如果導入不成功,請查看格式是否有誤                                                                                                                         

注意事項:經度和緯度的格式是: xxx.xx,是浮點型數字,如123.11,建議在系統上取到座標後,複製到這裏     

物資名稱 類型 別名 規格型號 物資數量 計量單位 保密等級 物資描述 備註 經度 緯度 主管部門
                       

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章