工具类-EXCEL-各类型转换(obj-String互转) 谁借莪1个温暖的怀抱¢ 2021-06-24 16:00 301阅读 0赞 package com.dianping.emidas.manage.biz.external.mp.util; import com.xuxueli.poi.excel.annotation.ExcelField; import java.lang.reflect.Field; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public final class FieldReflectionUtil { private FieldReflectionUtil(){} public static Byte parseByte(String value) { try { value = value.replaceAll(" ", ""); return Byte.valueOf(value); } catch(NumberFormatException e) { throw new RuntimeException("parseByte but input illegal input=" + value, e); } } public static Boolean parseBoolean(String value) { value = value.replaceAll(" ", ""); if (Boolean.TRUE.toString().equalsIgnoreCase(value)) { return Boolean.TRUE; } else if (Boolean.FALSE.toString().equalsIgnoreCase(value)) { return Boolean.FALSE; } else { throw new RuntimeException("parseBoolean but input illegal input=" + value); } } public static Integer parseInt(String value) { try { value = value.replaceAll(" ", ""); return Integer.valueOf(value); } catch(NumberFormatException e) { throw new RuntimeException("parseInt but input illegal input=" + value, e); } } public static Short parseShort(String value) { try { value = value.replaceAll(" ", ""); return Short.valueOf(value); } catch(NumberFormatException e) { throw new RuntimeException("parseShort but input illegal input=" + value, e); } } public static Long parseLong(String value) { try { value = value.replaceAll(" ", ""); return Long.valueOf(value); } catch(NumberFormatException e) { throw new RuntimeException("parseLong but input illegal input=" + value, e); } } public static Float parseFloat(String value) { try { value = value.replaceAll(" ", ""); return Float.valueOf(value); } catch(NumberFormatException e) { throw new RuntimeException("parseFloat but input illegal input=" + value, e); } } public static Double parseDouble(String value) { try { value = value.replaceAll(" ", ""); return Double.valueOf(value); } catch(NumberFormatException e) { throw new RuntimeException("parseDouble but input illegal input=" + value, e); } } public static Date parseDate(String value, ExcelField excelField) { try { String datePattern = "yyyy-MM-dd HH:mm:ss"; if (excelField != null) { datePattern = excelField.dateformat(); } SimpleDateFormat dateFormat = new SimpleDateFormat(datePattern); return dateFormat.parse(value); } catch(ParseException e) { throw new RuntimeException("parseDate but input illegal input=" + value, e); } } /** * 参数解析 (支持:Byte、Boolean、String、Short、Integer、Long、Float、Double、Date) * * @param field * @param value * @return */ public static Object parseValue(Field field, String value) { Class<?> fieldType = field.getType(); ExcelField excelField = field.getAnnotation(ExcelField.class); if(value==null || value.trim().length()==0) return null; value = value.trim(); /*if (Byte.class.equals(fieldType) || Byte.TYPE.equals(fieldType)) { return parseByte(value); } else */if (Boolean.class.equals(fieldType) || Boolean.TYPE.equals(fieldType)) { return parseBoolean(value); }/* else if (Character.class.equals(fieldType) || Character.TYPE.equals(fieldType)) { return value.toCharArray()[0]; }*/ else if (String.class.equals(fieldType)) { return value; } else if (Short.class.equals(fieldType) || Short.TYPE.equals(fieldType)) { return parseShort(value); } else if (Integer.class.equals(fieldType) || Integer.TYPE.equals(fieldType)) { return parseInt(value); } else if (Long.class.equals(fieldType) || Long.TYPE.equals(fieldType)) { return parseLong(value); } else if (Float.class.equals(fieldType) || Float.TYPE.equals(fieldType)) { return parseFloat(value); } else if (Double.class.equals(fieldType) || Double.TYPE.equals(fieldType)) { return parseDouble(value); } else if (Date.class.equals(fieldType)) { return parseDate(value, excelField); } else { throw new RuntimeException("request illeagal type, type must be Integer not int Long not long etc, type=" + fieldType); } } /** * 参数格式化为String * * @param field * @param value * @return */ public static String formatValue(Field field, Object value) { Class<?> fieldType = field.getType(); ExcelField excelField = field.getAnnotation(ExcelField.class); if(value==null) { return null; } if (Boolean.class.equals(fieldType) || Boolean.TYPE.equals(fieldType)) { return String.valueOf(value); } else if (String.class.equals(fieldType)) { return String.valueOf(value); } else if (Short.class.equals(fieldType) || Short.TYPE.equals(fieldType)) { return String.valueOf(value); } else if (Integer.class.equals(fieldType) || Integer.TYPE.equals(fieldType)) { return String.valueOf(value); } else if (Long.class.equals(fieldType) || Long.TYPE.equals(fieldType)) { return String.valueOf(value); } else if (Float.class.equals(fieldType) || Float.TYPE.equals(fieldType)) { return String.valueOf(value); } else if (Double.class.equals(fieldType) || Double.TYPE.equals(fieldType)) { return String.valueOf(value); } else if (Date.class.equals(fieldType)) { String datePattern = "yyyy-MM-dd HH:mm:ss"; if (excelField != null && excelField.dateformat()!=null) { datePattern = excelField.dateformat(); } SimpleDateFormat dateFormat = new SimpleDateFormat(datePattern); return dateFormat.format(value); } else { throw new RuntimeException("request illeagal type, type must be Integer not int Long not long etc, type=" + fieldType); } } }
还没有评论,来说两句吧...