疯狂的狮子li
2021-08-02 f8ab5663ef7220f8adc0fd8fcbd7d0cf84c6d77d
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -1,8 +1,6 @@
package com.ruoyi.common.utils.poi;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type;
@@ -12,6 +10,7 @@
import com.ruoyi.common.exception.CustomException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileTypeUtils;
import com.ruoyi.common.utils.file.ImageUtils;
import com.ruoyi.common.utils.reflect.ReflectUtils;
@@ -125,7 +124,7 @@
     */
    public List<T> importExcel(InputStream is) throws Exception
    {
        return importExcel(StrUtil.EMPTY, is);
        return importExcel(StringUtils.EMPTY, is);
    }
    /**
@@ -141,7 +140,7 @@
        this.wb = WorkbookFactory.create(is);
        List<T> list = new ArrayList<T>();
        Sheet sheet = null;
        if (Validator.isNotEmpty(sheetName))
        if (StringUtils.isNotEmpty(sheetName))
        {
            // 如果指定sheet名,则取指定sheet中的内容.
            sheet = wb.getSheet(sheetName);
@@ -168,7 +167,7 @@
            for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++)
            {
                Cell cell = heard.getCell(i);
                if (Validator.isNotNull(cell))
                if (StringUtils.isNotNull(cell))
                {
                    String value = this.getCellValue(heard, i).toString();
                    cellMap.put(value, i);
@@ -219,14 +218,14 @@
                    if (String.class == fieldType)
                    {
                        String s = Convert.toStr(val);
                        if (StrUtil.endWith(s, ".0"))
                        if (StringUtils.endWith(s, ".0"))
                        {
                            val = StrUtil.subBefore(s, ".0",false);
                            val = StringUtils.subBefore(s, ".0",false);
                        }
                        else
                        {
                            String dateFormat = field.getAnnotation(Excel.class).dateFormat();
                            if (Validator.isNotEmpty(dateFormat))
                            if (StringUtils.isNotEmpty(dateFormat))
                            {
                                val = DateUtils.parseDateToStr(dateFormat, (Date) val);
                            }
@@ -236,7 +235,7 @@
                            }
                        }
                    }
                    else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && Validator.isNumber(Convert.toStr(val)))
                    else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val)))
                    {
                        val = Convert.toInt(val);
                    }
@@ -271,19 +270,19 @@
                    {
                        val = Convert.toBool(val, false);
                    }
                    if (Validator.isNotNull(fieldType))
                    if (StringUtils.isNotNull(fieldType))
                    {
                        Excel attr = field.getAnnotation(Excel.class);
                        String propertyName = field.getName();
                        if (Validator.isNotEmpty(attr.targetAttr()))
                        if (StringUtils.isNotEmpty(attr.targetAttr()))
                        {
                            propertyName = field.getName() + "." + attr.targetAttr();
                        }
                        else if (Validator.isNotEmpty(attr.readConverterExp()))
                        else if (StringUtils.isNotEmpty(attr.readConverterExp()))
                        {
                            val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
                        }
                        else if (Validator.isNotEmpty(attr.dictType()))
                        else if (StringUtils.isNotEmpty(attr.dictType()))
                        {
                            val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
                        }
@@ -509,13 +508,13 @@
    {
        if (ColumnType.STRING == attr.cellType())
        {
            cell.setCellValue(Validator.isNull(value) ? attr.defaultValue() : value + attr.suffix());
            cell.setCellValue(StringUtils.isNull(value) ? attr.defaultValue() : value + attr.suffix());
        }
        else if (ColumnType.NUMERIC == attr.cellType())
        {
            if (Validator.isNotNull(value))
            if (StringUtils.isNotNull(value))
            {
                cell.setCellValue(StrUtil.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));
                cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));
            }
        }
        else if (ColumnType.IMAGE == attr.cellType())
@@ -523,7 +522,7 @@
            ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1),
                    cell.getRow().getRowNum() + 1);
            String imagePath = Convert.toStr(value);
            if (Validator.isNotEmpty(imagePath))
            if (StringUtils.isNotEmpty(imagePath))
            {
                byte[] data = ImageUtils.getImage(imagePath);
                getDrawingPatriarch(cell.getSheet()).createPicture(anchor,
@@ -576,7 +575,7 @@
            sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256));
        }
        // 如果设置了提示信息则鼠标放上去提示.
        if (Validator.isNotEmpty(attr.prompt()))
        if (StringUtils.isNotEmpty(attr.prompt()))
        {
            // 这里默认设了2-101列提示.
            setXSSFPrompt(sheet, "", attr.prompt(), 1, 100, column, column);
@@ -613,15 +612,15 @@
                String readConverterExp = attr.readConverterExp();
                String separator = attr.separator();
                String dictType = attr.dictType();
                if (Validator.isNotEmpty(dateFormat) && Validator.isNotNull(value))
                if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value))
                {
                    cell.setCellValue(DateUtils.parseDateToStr(dateFormat, (Date) value));
                }
                else if (Validator.isNotEmpty(readConverterExp) && Validator.isNotNull(value))
                else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value))
                {
                    cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
                }
                else if (Validator.isNotEmpty(dictType) && Validator.isNotNull(value))
                else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value))
                {
                    cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator));
                }
@@ -716,7 +715,7 @@
        for (String item : convertSource)
        {
            String[] itemArray = item.split("=");
            if (StrUtil.containsAny(propertyValue, separator))
            if (StringUtils.containsAny(propertyValue, separator))
            {
                for (String value : propertyValue.split(separator))
                {
@@ -735,7 +734,7 @@
                }
            }
        }
        return StrUtil.strip(propertyString.toString(), null,separator);
        return StringUtils.strip(propertyString.toString(), null,separator);
    }
    /**
@@ -753,7 +752,7 @@
        for (String item : convertSource)
        {
            String[] itemArray = item.split("=");
            if (StrUtil.containsAny(propertyValue, separator))
            if (StringUtils.containsAny(propertyValue, separator))
            {
                for (String value : propertyValue.split(separator))
                {
@@ -772,7 +771,7 @@
                }
            }
        }
        return StrUtil.strip(propertyString.toString(), null,separator);
        return StringUtils.strip(propertyString.toString(), null,separator);
    }
    /**
@@ -885,7 +884,7 @@
    private Object getTargetValue(T vo, Field field, Excel excel) throws Exception
    {
        Object o = field.get(vo);
        if (Validator.isNotEmpty(excel.targetAttr()))
        if (StringUtils.isNotEmpty(excel.targetAttr()))
        {
            String target = excel.targetAttr();
            if (target.contains("."))
@@ -914,7 +913,7 @@
     */
    private Object getValue(Object o, String name) throws Exception
    {
        if (Validator.isNotNull(o) && Validator.isNotEmpty(name))
        if (StringUtils.isNotNull(o) && StringUtils.isNotEmpty(name))
        {
            Class<?> clazz = o.getClass();
            Field field = clazz.getDeclaredField(name);
@@ -1027,7 +1026,7 @@
        try
        {
            Cell cell = row.getCell(column);
            if (Validator.isNotNull(cell))
            if (StringUtils.isNotNull(cell))
            {
                if (cell.getCellType() == CellType.NUMERIC || cell.getCellType() == CellType.FORMULA)
                {