poi 解析excel 时间和日期格式分类解析

  大家好,使用poi解析excel,第二篇来啦。这一篇主要是探讨日期和时间格式的解决。(转载请注明出处,谢谢!)

众所周知,在excel中有很多的时间和日期格式。而poi官方在处理时间和日期上面的能力比较弱。网上很多地方都找不到解决的方法,或者说解决的覆盖面太小,解决的格式很少很少。

所以我建议:日期或者时间格式,一定要让用户输出文本格式!!!

如果产品实在没有定义。那么就需要自己解决下。

 

下面我列出excel中时间和日期中几类格式。

日期:1. 年月日时分秒 2. 年月日 3. 年月 4. 月日 5. 星期X  6.周X  7.月

时间:有时分等等,统一成时分秒。

 

为了不让它补齐,我们需要不同类的格式用不同的格式化的方法。

一、首先确定每种分类的格式

/**
 * 年月日时分秒 默认格式
 */
SimpleDateFormat COMMON_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
 * 时间 默认格式
 */
SimpleDateFormat COMMON_TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");
/**
 * 年月日 默认格式
 */
SimpleDateFormat COMMON_DATE_FORMAT_NYR = new SimpleDateFormat("yyyy-MM-dd");
/**
 * 年月 默认格式
 */
SimpleDateFormat COMMON_DATE_FORMAT_NY = new SimpleDateFormat("yyyy-MM");
/**
 * 月日 默认格式
 */
SimpleDateFormat COMMON_DATE_FORMAT_YR = new SimpleDateFormat("MM-dd");
/**
 * 月 默认格式
 */
SimpleDateFormat COMMON_DATE_FORMAT_Y = new SimpleDateFormat("MM");
/**
 * 星期 默认格式
 */
String COMMON_DATE_FORMAT_XQ = "星期";
/**
 * 周 默认格式
 */
String COMMON_DATE_FORMAT_Z = "周";

二、确定每种时间或者日期分类。

每个单元格都有dataFormat 和 dataFormatString,用户模式和事件驱动模式得到的方法不同,我们可以根据这个去判断单元格属于哪种分类。

一开始我准备使用dataFormat去判别,但是我发现 dataFormat数字除了几个2位数的不会变化以外,其余会变化。所以,经过多次整理测试,用 dataFormatString,去判别,下面是我整理的覆盖面比较广的 dataFormat 和 dataFormatString。

判断日期要分为两步: 一个是用  isValidExcelDate() 判断单元格的值是否可以转成日期,第二个就是 isInternalDateFormat() 判断单元格类型。

所以我们进行改造如下: 

 /**
     * 07版时间(非日期) 总time
     */
    List<Short> EXCEL_FORMAT_INDEX_07_TIME = Arrays.asList(
            new Short[]{18, 19, 20, 21, 32, 33, 45, 46, 47, 55, 56, 176, 177, 178, 179, 180, 181,
                    182, 183, 184, 185, 186}
    );
    /**
     * 07版日期(非时间) 总date
     */
    List<Short> EXCEL_FORMAT_INDEX_07_DATE = Arrays.asList(
            new Short[]{14, 15, 16, 17, 22, 30, 31, 57, 58, 187, 188, 189, 190, 191, 192, 193,
                    194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208}
    );
    /**
     * 03版时间(非日期) 总time
     */
    List<Short> EXCEL_FORMAT_INDEX_03_TIME = Arrays.asList(
            new Short[]{18, 19, 20, 21, 32, 33, 45, 46, 47, 55, 56, 176, 177, 178, 179, 180, 181,
                    182, 183, 184, 185, 186}
    );
    /**
     * 07版日期(非日期) 总date
     */
    List<Short> EXCEL_FORMAT_INDEX_03_DATE = Arrays.asList(
            new Short[]{14, 15, 16, 17, 22, 30, 31, 57, 58, 187, 188, 189, 190, 191, 192, 193,
                    194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208}
    );
    /**
     * date-年月日时分秒
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_NYRSFM_STRING = Arrays.asList(
            "yyyy/m/d\\ h:mm;@", "m/d/yy h:mm", "yyyy/m/d\\ h:mm\\ AM/PM",
            "[$-409]yyyy/m/d\\ h:mm\\ AM/PM;@", "yyyy/mm/dd\\ hh:mm:dd", "yyyy/mm/dd\\ hh:mm", "yyyy/m/d\\ h:m", "yyyy/m/d\\ h:m:s",
            "yyyy/m/d\\ h:mm", "m/d/yy h:mm;@", "yyyy/m/d\\ h:mm\\ AM/PM;@"
    );
    /**
     * date-年月日
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_NYR_STRING = Arrays.asList(
            "m/d/yy", "[$-F800]dddd\\,\\ mmmm\\ dd\\,\\ yyyy",
            "[DBNum1][$-804]yyyy\"年\"m\"月\"d\"日\";@", "yyyy\"年\"m\"月\"d\"日\";@", "yyyy/m/d;@", "yy/m/d;@", "m/d/yy;@",
            "[$-409]d/mmm/yy", "[$-409]dd/mmm/yy;@", "reserved-0x1F", "reserved-0x1E", "mm/dd/yy;@", "yyyy/mm/dd", "d-mmm-yy",
            "[$-409]d\\-mmm\\-yy;@", "[$-409]d\\-mmm\\-yy", "[$-409]dd\\-mmm\\-yy;@", "[$-409]dd\\-mmm\\-yy",
            "[DBNum1][$-804]yyyy\"年\"m\"月\"d\"日\"", "yy/m/d", "mm/dd/yy", "dd\\-mmm\\-yy"
    );
    /**
     * date-年月
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_NY_STRING = Arrays.asList(
            "[DBNum1][$-804]yyyy\"年\"m\"月\";@", "[DBNum1][$-804]yyyy\"年\"m\"月\"",
            "yyyy\"年\"m\"月\";@", "yyyy\"年\"m\"月\"", "[$-409]mmm\\-yy;@", "[$-409]mmm\\-yy",
            "[$-409]mmm/yy;@", "[$-409]mmm/yy", "[$-409]mmmm/yy;@","[$-409]mmmm/yy",
            "[$-409]mmmmm/yy;@", "[$-409]mmmmm/yy", "mmm-yy", "yyyy/mm", "mmm/yyyy",
            "[$-409]mmmm\\-yy;@", "[$-409]mmmmm\\-yy;@", "mmmm\\-yy", "mmmmm\\-yy"
    );
    /**
     * date-月日
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_YR_STRING = Arrays.asList(
            "[DBNum1][$-804]m\"月\"d\"日\";@", "[DBNum1][$-804]m\"月\"d\"日\"",
            "m\"月\"d\"日\";@", "m\"月\"d\"日\"", "[$-409]d/mmm;@", "[$-409]d/mmm",
            "m/d;@", "m/d", "d-mmm", "d-mmm;@", "mm/dd", "mm/dd;@", "[$-409]d\\-mmm;@", "[$-409]d\\-mmm"
    );
    /**
     * date-星期X
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_XQ_STRING = Arrays.asList("[$-804]aaaa;@", "[$-804]aaaa");
    /**
     * date-周X
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_Z_STRING = Arrays.asList("[$-804]aaa;@", "[$-804]aaa");
    /**
     * date-月X
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_Y_STRING = Arrays.asList("[$-409]mmmmm;@","mmmmm","[$-409]mmmmm");
    /**
     * time - 时间
     */
    List<String> EXCEL_FORMAT_INDEX_TIME_STRING = Arrays.asList(
            "mm:ss.0", "h:mm", "h:mm\\ AM/PM", "h:mm:ss", "h:mm:ss\\ AM/PM",
            "reserved-0x20", "reserved-0x21", "[DBNum1]h\"时\"mm\"分\"", "[DBNum1]上午/下午h\"时\"mm\"分\"", "mm:ss",
            "[h]:mm:ss", "h:mm:ss;@", "[$-409]h:mm:ss\\ AM/PM;@", "h:mm;@", "[$-409]h:mm\\ AM/PM;@",
            "h\"时\"mm\"分\";@", "h\"时\"mm\"分\"\\ AM/PM;@", "h\"时\"mm\"分\"ss\"秒\";@", "h\"时\"mm\"分\"ss\"秒\"_ AM/PM;@", "上午/下午h\"时\"mm\"分\";@",
            "上午/下午h\"时\"mm\"分\"ss\"秒\";@", "[DBNum1][$-804]h\"时\"mm\"分\";@", "[DBNum1][$-804]上午/下午h\"时\"mm\"分\";@", "h:mm AM/PM","h:mm:ss AM/PM",
            "[$-F400]h:mm:ss\\ AM/PM"
    );
    /**
     * date-当formatString为空的时候-年月
     */
    Short EXCEL_FORMAT_INDEX_DATA_EXACT_NY = 57;
    /**
     * date-当formatString为空的时候-月日
     */
    Short EXCEL_FORMAT_INDEX_DATA_EXACT_YR = 58;
    /**
     * time-当formatString为空的时候-时间
     */
    List<Short> EXCEL_FORMAT_INDEX_TIME_EXACT = Arrays.asList(new Short[]{55, 56});

下面上更改后的用户模式的代码,main方法我就不写了,自己写一下。。

package com.youth.excel_youth.util;

import com.youth.excel_youth.constants.Constants;
import org.apache.poi.ss.usermodel.*;
import org.springframework.util.Assert;

import java.util.Date;

/**
 * @author: youth_1231
 * @Date: 2019/1/7 0007 15:41
 * @Description:
 */
public class ExcelUtils {

    /**
     * 用户模式得到单元格的值
     * @param workbook
     * @param cell
     * @return
     */
    public static String getCellValue(Workbook workbook, Cell cell){
        Assert.notNull(workbook, "when you parse excel, workbook is not allowed to be null");
        String cellValue = "";
        if (cell == null){
            return cellValue;
        }

        switch (cell.getCellType()){
            case NUMERIC:

                cellValue = getDateValue(cell.getCellStyle().getDataFormat(), cell.getCellStyle().getDataFormatString(),
                        cell.getNumericCellValue());
                if (cellValue == null){
                    cellValue = String.valueOf(cell.getNumericCellValue());
                }
                break;
            case STRING:
                cellValue = String.valueOf(cell.getStringCellValue());
                break;
            case BOOLEAN:
                cellValue = String.valueOf(cell.getBooleanCellValue());
                break;
            case FORMULA:
                /**
                 * 格式化单元格
                 */
                FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
                cellValue = getCellValue(evaluator.evaluate(cell));
                break;
            case BLANK:
                cellValue = "";
                break;
            case ERROR:
                cellValue = String.valueOf(cell.getErrorCellValue());
                break;
            case _NONE:
                cellValue = "";
                break;
            default:
                cellValue = "未知类型";
                break;
        }
        return cellValue;

    }


    /**
     * 用户模式得到公式单元格的值
     * @param formulaValue
     * @return
     */
    public static String getCellValue(CellValue formulaValue){
        String cellValue = "";
        if (formulaValue == null){
            return cellValue;
        }

        switch (formulaValue.getCellType()){
            case NUMERIC:
                cellValue = String.valueOf(formulaValue.getNumberValue());
                break;
            case STRING:
                cellValue = String.valueOf(formulaValue.getStringValue());
                break;
            case BOOLEAN:
                cellValue = String.valueOf(formulaValue.getBooleanValue());
                break;
            case BLANK:
                cellValue = "";
                break;
            case ERROR:
                cellValue = String.valueOf(formulaValue.getErrorValue());
                break;
            case _NONE:
                cellValue = "";
                break;
            default:
                cellValue = "未知类型";
                break;
        }
        return cellValue;

    }

    /**
     * 得到date单元格格式的值
     * @param dataFormat
     * @param dataFormatString
     * @param value
     * @return
     */
    public static String getDateValue(Short dataFormat, String dataFormatString, double value){
        if (!DateUtil.isValidExcelDate(value)){
            return null;
        }

        Date date = DateUtil.getJavaDate(value);
        /**
         * 年月日时分秒
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_NYRSFM_STRING.contains(dataFormatString)) {
            return Constants.COMMON_DATE_FORMAT.format(date);
        }
        /**
         * 年月日
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_NYR_STRING.contains(dataFormatString)) {
            return Constants.COMMON_DATE_FORMAT_NYR.format(date);
        }
        /**
         * 年月
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_NY_STRING.contains(dataFormatString) || Constants.EXCEL_FORMAT_INDEX_DATA_EXACT_NY.equals(dataFormat)) {
            return Constants.COMMON_DATE_FORMAT_NY.format(date);
        }
        /**
         * 月日
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_YR_STRING.contains(dataFormatString) || Constants.EXCEL_FORMAT_INDEX_DATA_EXACT_YR.equals(dataFormat)) {
            return Constants.COMMON_DATE_FORMAT_YR.format(date);

        }
        /**
         * 月
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_Y_STRING.contains(dataFormatString)) {
            return Constants.COMMON_DATE_FORMAT_Y.format(date);
        }
        /**
         * 星期X
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_XQ_STRING.contains(dataFormatString)) {
            return Constants.COMMON_DATE_FORMAT_XQ + CommonUtils.dateToWeek(date);
        }
        /**
         * 周X
         */
        if (Constants.EXCEL_FORMAT_INDEX_DATE_Z_STRING.contains(dataFormatString)) {
            return Constants.COMMON_DATE_FORMAT_Z + CommonUtils.dateToWeek(date);
        }
        /**
         * 时间格式
         */
        if (Constants.EXCEL_FORMAT_INDEX_TIME_STRING.contains(dataFormatString) || Constants.EXCEL_FORMAT_INDEX_TIME_EXACT.contains(dataFormat)) {
            return Constants.COMMON_TIME_FORMAT.format(DateUtil.getJavaDate(value));
        }
        /**
         * 单元格为其他未覆盖到的类型
         */
        if (DateUtil.isADateFormat(dataFormat, dataFormatString)) {
            return Constants.COMMON_TIME_FORMAT.format(value);
        }

        return null;
    }

}
package com.youth.excel_youth.constants;

import org.apache.poi.ss.usermodel.DataFormatter;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;

/**
 * @author: youth_1231
 * @Date: 2019/1/7 0007 16:14
 * @Description:
 */
public interface Constants {

    /**
     * 年月日时分秒 默认格式
     */
    SimpleDateFormat COMMON_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /**
     * 时间 默认格式
     */
    SimpleDateFormat COMMON_TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");
    /**
     * 年月日 默认格式
     */
    SimpleDateFormat COMMON_DATE_FORMAT_NYR = new SimpleDateFormat("yyyy-MM-dd");
    /**
     * 年月 默认格式
     */
    SimpleDateFormat COMMON_DATE_FORMAT_NY = new SimpleDateFormat("yyyy-MM");
    /**
     * 月日 默认格式
     */
    SimpleDateFormat COMMON_DATE_FORMAT_YR = new SimpleDateFormat("MM-dd");
    /**
     * 月 默认格式
     */
    SimpleDateFormat COMMON_DATE_FORMAT_Y = new SimpleDateFormat("MM");
    /**
     * 星期 默认格式
     */
    String COMMON_DATE_FORMAT_XQ = "星期";
    /**
     * 周 默认格式
     */
    String COMMON_DATE_FORMAT_Z = "周";
    /**
     * 07版时间(非日期) 总time
     */
    List<Short> EXCEL_FORMAT_INDEX_07_TIME = Arrays.asList(
            new Short[]{18, 19, 20, 21, 32, 33, 45, 46, 47, 55, 56, 176, 177, 178, 179, 180, 181,
                    182, 183, 184, 185, 186}
    );
    /**
     * 07版日期(非时间) 总date
     */
    List<Short> EXCEL_FORMAT_INDEX_07_DATE = Arrays.asList(
            new Short[]{14, 15, 16, 17, 22, 30, 31, 57, 58, 187, 188, 189, 190, 191, 192, 193,
                    194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208}
    );
    /**
     * 03版时间(非日期) 总time
     */
    List<Short> EXCEL_FORMAT_INDEX_03_TIME = Arrays.asList(
            new Short[]{18, 19, 20, 21, 32, 33, 45, 46, 47, 55, 56, 176, 177, 178, 179, 180, 181,
                    182, 183, 184, 185, 186}
    );
    /**
     * 07版日期(非日期) 总date
     */
    List<Short> EXCEL_FORMAT_INDEX_03_DATE = Arrays.asList(
            new Short[]{14, 15, 16, 17, 22, 30, 31, 57, 58, 187, 188, 189, 190, 191, 192, 193,
                    194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208}
    );
    /**
     * date-年月日时分秒
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_NYRSFM_STRING = Arrays.asList(
            "yyyy/m/d\\ h:mm;@", "m/d/yy h:mm", "yyyy/m/d\\ h:mm\\ AM/PM",
            "[$-409]yyyy/m/d\\ h:mm\\ AM/PM;@", "yyyy/mm/dd\\ hh:mm:dd", "yyyy/mm/dd\\ hh:mm", "yyyy/m/d\\ h:m", "yyyy/m/d\\ h:m:s",
            "yyyy/m/d\\ h:mm", "m/d/yy h:mm;@", "yyyy/m/d\\ h:mm\\ AM/PM;@"
    );
    /**
     * date-年月日
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_NYR_STRING = Arrays.asList(
            "m/d/yy", "[$-F800]dddd\\,\\ mmmm\\ dd\\,\\ yyyy",
            "[DBNum1][$-804]yyyy\"年\"m\"月\"d\"日\";@", "yyyy\"年\"m\"月\"d\"日\";@", "yyyy/m/d;@", "yy/m/d;@", "m/d/yy;@",
            "[$-409]d/mmm/yy", "[$-409]dd/mmm/yy;@", "reserved-0x1F", "reserved-0x1E", "mm/dd/yy;@", "yyyy/mm/dd", "d-mmm-yy",
            "[$-409]d\\-mmm\\-yy;@", "[$-409]d\\-mmm\\-yy", "[$-409]dd\\-mmm\\-yy;@", "[$-409]dd\\-mmm\\-yy",
            "[DBNum1][$-804]yyyy\"年\"m\"月\"d\"日\"", "yy/m/d", "mm/dd/yy", "dd\\-mmm\\-yy"
    );
    /**
     * date-年月
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_NY_STRING = Arrays.asList(
            "[DBNum1][$-804]yyyy\"年\"m\"月\";@", "[DBNum1][$-804]yyyy\"年\"m\"月\"",
            "yyyy\"年\"m\"月\";@", "yyyy\"年\"m\"月\"", "[$-409]mmm\\-yy;@", "[$-409]mmm\\-yy",
            "[$-409]mmm/yy;@", "[$-409]mmm/yy", "[$-409]mmmm/yy;@","[$-409]mmmm/yy",
            "[$-409]mmmmm/yy;@", "[$-409]mmmmm/yy", "mmm-yy", "yyyy/mm", "mmm/yyyy",
            "[$-409]mmmm\\-yy;@", "[$-409]mmmmm\\-yy;@", "mmmm\\-yy", "mmmmm\\-yy"
    );
    /**
     * date-月日
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_YR_STRING = Arrays.asList(
            "[DBNum1][$-804]m\"月\"d\"日\";@", "[DBNum1][$-804]m\"月\"d\"日\"",
            "m\"月\"d\"日\";@", "m\"月\"d\"日\"", "[$-409]d/mmm;@", "[$-409]d/mmm",
            "m/d;@", "m/d", "d-mmm", "d-mmm;@", "mm/dd", "mm/dd;@", "[$-409]d\\-mmm;@", "[$-409]d\\-mmm"
    );
    /**
     * date-星期X
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_XQ_STRING = Arrays.asList("[$-804]aaaa;@", "[$-804]aaaa");
    /**
     * date-周X
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_Z_STRING = Arrays.asList("[$-804]aaa;@", "[$-804]aaa");
    /**
     * date-月X
     */
    List<String> EXCEL_FORMAT_INDEX_DATE_Y_STRING = Arrays.asList("[$-409]mmmmm;@","mmmmm","[$-409]mmmmm");
    /**
     * time - 时间
     */
    List<String> EXCEL_FORMAT_INDEX_TIME_STRING = Arrays.asList(
            "mm:ss.0", "h:mm", "h:mm\\ AM/PM", "h:mm:ss", "h:mm:ss\\ AM/PM",
            "reserved-0x20", "reserved-0x21", "[DBNum1]h\"时\"mm\"分\"", "[DBNum1]上午/下午h\"时\"mm\"分\"", "mm:ss",
            "[h]:mm:ss", "h:mm:ss;@", "[$-409]h:mm:ss\\ AM/PM;@", "h:mm;@", "[$-409]h:mm\\ AM/PM;@",
            "h\"时\"mm\"分\";@", "h\"时\"mm\"分\"\\ AM/PM;@", "h\"时\"mm\"分\"ss\"秒\";@", "h\"时\"mm\"分\"ss\"秒\"_ AM/PM;@", "上午/下午h\"时\"mm\"分\";@",
            "上午/下午h\"时\"mm\"分\"ss\"秒\";@", "[DBNum1][$-804]h\"时\"mm\"分\";@", "[DBNum1][$-804]上午/下午h\"时\"mm\"分\";@", "h:mm AM/PM","h:mm:ss AM/PM",
            "[$-F400]h:mm:ss\\ AM/PM"
    );
    /**
     * date-当formatString为空的时候-年月
     */
    Short EXCEL_FORMAT_INDEX_DATA_EXACT_NY = 57;
    /**
     * date-当formatString为空的时候-月日
     */
    Short EXCEL_FORMAT_INDEX_DATA_EXACT_YR = 58;
    /**
     * time-当formatString为空的时候-时间
     */
    List<Short> EXCEL_FORMAT_INDEX_TIME_EXACT = Arrays.asList(new Short[]{55, 56});
    /**
     * 格式化星期或者周显示
     */
    String[] WEEK_DAYS = { "日", "一", "二", "三", "四", "五", "六" };
    /**
     * 07版 excel dataformat
     */
    DataFormatter EXCEL_07_DATA_FORMAT = new DataFormatter();
    /**
     * 小数 正则
     */
    Pattern PATTERN_DECIMAL = Pattern.compile("^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+)$");
    /**
     * 07版excel后缀名
     */
    String EXCEL_SUFFIX_07 = "xlsx";
    /**
     * 03版excel后缀名
     */
    String EXCEL_SUFFIX_03 = "xls";
}
package com.youth.excel_youth.util;

import com.youth.excel_youth.constants.Constants;

import java.util.Calendar;
import java.util.Date;

/**
 * @author: youth_1231
 * @Date: 2019/1/24 0024 09:43
 * @Description:
 */
public class CommonUtils {
    /**
     * 日期转星期
     * @param date
     * @return
     */
    public static String dateToWeek(Date date) {
        if (date == null){
            return "";
        }
        // 获得一个日历
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 指示一个星期中的某天。
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;
        return Constants.WEEK_DAYS[w];
    }

}

中 ExcelUtils里的 getDateValue(Short dataFormat, String dataFormatString, double value) 事件模式也能用。我下一篇会说到。  如果有未覆盖到的dataFormatString 可以和我说一下,联系方式:[email protected]

tip:眼尖的大佬肯定发现了dataFormatString存在某种规律。由于最近准备换工作,没时间完善。我等有空了在更新补充。

猜你喜欢

转载自blog.csdn.net/qq_36567420/article/details/86675303