excel表格匯入資料庫資料存在則更新不存在新增
阿新 • • 發佈:2018-12-05
public void excelToDB() throws ParseException { String datapath = this.getParameter("datapath"); String filePath = AppUtil.getAppAbsolutePath()+datapath; Workbook rwb = null; try { // 建立輸入流 InputStream stream = new FileInputStream(filePath);// 獲取Excel檔案物件 rwb = Workbook.getWorkbook(stream); } catch (Exception e) { e.printStackTrace(); }//匯入檔案 Sheet rs = rwb.getSheet(0);//表 int rows = rs.getRows();//得到所有的行 for(int i=1;i<rows;i++) { Map<String,Object> map = null; //如果busreqno,entno為空則新增 String busregno = rs.getCell(0,i).getContents(); String entno = rs.getCell(2,i).getContents(); map = yksptBuildManager.getEntityDao().findObjectBySql("sql查詢語句",busregno); if(map == null && !"".equals(entno) && entno!= null) { map = yksptBuildManager.getEntityDao().findObjectBySql("sql查詢語句",entno); } if(map == null) { map = new HashMap<String,Object>(); } //沒查到就插入資料庫 所匯入實體類 entity = new 所匯入的實體類(); boolean flag = false; if(map.size() != 0) { entity = yksptBuildManager.getEntityDao().getById((String)map.get("所匯入表id")); flag = true; } entity.setBname(rs.getCell(1,i).getContents()); entity.setBaddress(rs.getCell(2,i).getContents()); entity.setOnesitekey(rs.getCell(3,i).getContents()); entity.setTwositekey(rs.getCell(5,i).getContents()); //根據下標獲取excle表中經度緯度,取逗號前0後1 String s=rs.getCell(6,i).getContents(); String[] ss=s.split(","); if(!"".equals(ss) && ss!= null) { entity.setCoordinatesx (ss[0]); entity.setCoordinatesy(ss[1]); } if(!"".equals(rs.getCell(7,i).getContents())&& rs.getCell(7,i).getContents()!=null) {//根據excle表內資料匹配後臺相對應狀態,001,,002,003~~存入庫內 entity.setBstreet(this.sysDictionaryManager.findDictNameByGroupkeyAndHvalue("ykspt.street",rs.getCell(7,i).getContents())); } entity.setManage(rs.getCell(8,i).getContents()); entity.setBtype(rs.getCell(9,i).getContents()); entity.setWorkstation(rs.getCell(10,i).getContents()); entity.setBuiltuparea(rs.getCell(12,i).getContents()); entity.setUpperarea(rs.getCell(13,i).getContents()); entity.setSparearea(rs.getCell(14,i).getContents()); entity.setPropertyunit(rs.getCell(15,i).getContents()); if(flag) { //更新資料庫 this.yksptBuildManager.update(entity); }else { //插入資料 this.yksptBuildManager.save(entity); } System.out.println(i); } }