From fdbf6d3ebfb18ef5b360e71ddd1492da47b2d861 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Thu, 31 Jan 2019 09:33:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=88=B6=E7=B1=BB=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/utils/poi/ExcelUtil.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index 55511401..340b253a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -7,8 +7,10 @@ import java.io.InputStream; import java.io.OutputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -221,6 +223,10 @@ public class ExcelUtil { val = Convert.toFloat(val); } + else if (BigDecimal.class == fieldType) + { + val = Convert.toBigDecimal(val); + } else if (Date.class == fieldType) { if (val instanceof String) @@ -665,14 +671,29 @@ public class ExcelUtil private void createExcelField() { this.fields = new ArrayList(); - Field[] allFields = clazz.getDeclaredFields(); - // 得到所有field并存放到一个list中. - for (Field field : allFields) + List tempFields = new ArrayList<>(); + Class tempClass = clazz; + tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); + while (tempClass != null) + { + tempClass = tempClass.getSuperclass(); + if (tempClass != null) + tempFields.addAll(Arrays.asList(tempClass.getDeclaredFields())); + } + putToFields(tempFields); + } + + /** + * 放到字段集合中 + */ + private void putToFields(List fields) + { + for (Field field : fields) { Excel attr = field.getAnnotation(Excel.class); if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) { - fields.add(field); + this.fields.add(field); } } }