| | |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | | import org.apache.poi.openxml4j.exceptions.InvalidFormatException; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.usermodel.XSSFPicture; |
| | | import org.apache.poi.xssf.usermodel.XSSFPictureData; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.slf4j.Logger; |
| | |
| | | } |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Object[] os : annotationList){ |
| | | Object val = this.getCellValue(row, column++); |
| | | if (val != null){ |
| | | int tcolumn = column++; |
| | | Object val = this.getCellValue(row, tcolumn);; |
| | | ExcelColumn ef = (ExcelColumn)os[0]; |
| | | // Get param type and type cast |
| | | Class<?> valType = Class.class; |
| | |
| | | valType = ((Method)os[1]).getParameterTypes()[0]; |
| | | } |
| | | } |
| | | //log.debug("Import value type: ["+i+","+column+"] " + valType); |
| | | if(ef.fieldType()== XSSFPictureData.class){ |
| | | XSSFPictureData qrData = null; |
| | | if(val !=null){ |
| | | String tid = String.valueOf(val.toString()).trim(); |
| | | int start = tid.indexOf("(\"")+2; |
| | | int end = tid.indexOf("\","); |
| | | if(start>=0&& end>=1 && end>start){ |
| | | String picId = tid.substring(start,end); |
| | | XSSFPictureData data = this.pictureList.get(picId); |
| | | if(data!= null && data.getData() != null){ |
| | | qrData =data; |
| | | } |
| | | } |
| | | } |
| | | val = null; |
| | | //悬浮图片 |
| | | List<XSSFPictureData> xfData = ExcelPictureUtil.getPicturesFromCell(this.sheet,row.getCell(tcolumn)); |
| | | List<XSSFPictureData> valList =new ArrayList<>(); |
| | | if(qrData!=null){ |
| | | valList.add(qrData); |
| | | } |
| | | if(xfData!=null){ |
| | | valList.addAll(xfData); |
| | | } |
| | | if (valType==List.class){ |
| | | val =valList; |
| | | } else if ( valType==XSSFPictureData.class){ |
| | | val = (valList!=null && valList.size()>0)?valList.get(0):null; |
| | | } |
| | | }else{ |
| | | if (val != null){ |
| | | try { |
| | | if (valType == String.class){ |
| | | String s = String.valueOf(val.toString()); |
| | |
| | | val = Float.valueOf(val.toString()); |
| | | }else if (valType == Date.class){ |
| | | val = DateUtil.getJavaDate((Double)val); |
| | | }else if (valType == XSSFPictureData.class){ |
| | | }else{ |
| | | if (ef.fieldType() != Class.class){ |
| | | val = ef.fieldType().getMethod("getValue", String.class).invoke(null, val.toString()); |
| | |
| | | "fieldtype."+valType.getSimpleName()+"Type")).getMethod("getValue", String.class).invoke(null, val.toString()); |
| | | } |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | log.info("Get cell value ["+i+","+column+"] error: " + ex.toString()); |
| | | val = null; |
| | | } |
| | | } |
| | | } |
| | | if (val != null){ |
| | | try { |
| | | // set entity value |
| | | if (os[1] instanceof Field){ |
| | | Reflections.invokeSetter(e, ((Field)os[1]).getName(), val); |
| | |
| | | } |
| | | Reflections.invokeMethod(e, mthodName, new Class[] {valType}, new Object[] {val}); |
| | | } |
| | | }catch (Exception e1){ |
| | | val =null; |
| | | } |
| | | }else{ |
| | | } |
| | | sb.append(val+", "); |
| | | } |