使用POI获取时间单元格的值-----格式化后的值


注意:

  1. 个人认为,解析时间单元格的值直接返回java.util.Date是比较好的一种方法。因为从下面的格式化方法中可以看到,好多日期格式其实是我们在java程序或是数据库中很少使用的,所以没有必要发大功夫把时间单元格的值格式化成对应的字符串返回。
  2. 常量中定义的一些值的集合是Cell.getCellStyle().getDataFormat()和Cell.getCellStyle().getDataFormatString()方法返回的值,这个读者可以自己编写代码测一测,这里不保证已经包含全部的可能值(漏掉值的可能性不大)。
  3. 因为时间格式单元格和数值单元格的Cell.getCellStyle()方法返回的都是NUMERIC,所以要获取Cell.getCellStyle().getDataFormat()或Cell.getCellStyle().getDataFormatString()进行格式转换。
  4. 使用DateUtil.isValidExcelDate(value)可以判断单元格的值是否可以转换成时间类型,切记该方法不能识别单元格的值是时间还是数值,他只是判断这个数值是否符合时间毫秒值(我是这样理解的)。
  5. 使用DateUtil.getJavaDate(value)可以将double类型的时间值转化成java.util.Date

1、一些常量

package com.dsanjun.poi.constant;

import java.util.Arrays;
import java.util.List;

/**
 * 常量
 * 
 * @author dyw
 * @date 2019年9月18日
 */
public interface Constants {
	/**
	 * 星期 默认格式
	 */
	String COMMON_DATE_FORMAT_XQ = "星期";
	/**
	 * 周 默认格式
	 */
	String COMMON_DATE_FORMAT_Z = "周";
	/**
	 * 07版时间=time的Cell.getCellStyle().getDataFormat()值
	 */
	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的Cell.getCellStyle().getDataFormat()值
	 */
	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的Cell.getCellStyle().getDataFormat()值
	 */
	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 });
	/**
	 * 03版日期 总date的Cell.getCellStyle().getDataFormat()值
	 */
	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-年月日时分秒-Cell.getCellStyle().getDataFormatString()
	 */
	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-年月日Cell.getCellStyle().getDataFormatString()
	 */
	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-年月-Cell.getCellStyle().getDataFormatString()
	 */
	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-月日Cell.getCellStyle().getDataFormatString()
	 */
	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-Cell.getCellStyle().getDataFormatString()
	 */
	List<String> EXCEL_FORMAT_INDEX_DATE_XQ_STRING = Arrays.asList("[$-804]aaaa;@", "[$-804]aaaa");
	/**
	 * date-周X-Cell.getCellStyle().getDataFormatString()
	 */
	List<String> EXCEL_FORMAT_INDEX_DATE_Z_STRING = Arrays.asList("[$-804]aaa;@", "[$-804]aaa");
	/**
	 * date-月X-Cell.getCellStyle().getDataFormatString()
	 */
	List<String> EXCEL_FORMAT_INDEX_DATE_Y_STRING = Arrays.asList("[$-409]mmmmm;@", "mmmmm", "[$-409]mmmmm");
	/**
	 * time - 时间-Cell.getCellStyle().getDataFormatString()
	 */
	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 = { "日", "一", "二", "三", "四", "五", "六" };
}

2、时间格式化器

package com.dsanjun.poi.constant;

import java.text.SimpleDateFormat;
import org.apache.poi.ss.usermodel.DataFormatter;

/**
 * 时间格式化器
 * 
 * @author dyw
 * @date 2019年9月18日
 */
public interface DateFormaters {
	/**
	 * 年月日时分秒 默认格式
	 */
	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");
	/**
	 * 07版 excel dataformat
	 */
	DataFormatter EXCEL_07_DATA_FORMAT = new DataFormatter();
}

3、 获取格式化后时间字符串的方法

/**
	 * 得到date单元格格式的值
	 * 
	 * @param dataFormat       来自Cell.getCellStyle().getDataFormat()的值
	 * @param dataFormatString 来自Cell.getCellStyle().getDataFormatString()的值
	 * @param value            来自Cell.getNumericCellValue()的值
	 * @return
	 */
	public static String getFormatDateStringValue(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 DateFormaters.COMMON_DATE_FORMAT.format(date);
		}
		/**
		 * 年月日
		 */
		if (Constants.EXCEL_FORMAT_INDEX_DATE_NYR_STRING.contains(dataFormatString)) {
			return DateFormaters.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 DateFormaters.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 DateFormaters.COMMON_DATE_FORMAT_YR.format(date);

		}
		/**
		 * 月
		 */
		if (Constants.EXCEL_FORMAT_INDEX_DATE_Y_STRING.contains(dataFormatString)) {
			return DateFormaters.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 DateFormaters.COMMON_TIME_FORMAT.format(DateUtil.getJavaDate(value));
		}
		/**
		 * 单元格为其他未覆盖到的类型
		 */
		if (DateUtil.isADateFormat(dataFormat, dataFormatString)) {
			return DateFormaters.COMMON_TIME_FORMAT.format(value);
		}

		return null;
	}

4、 完整的工具类

package com.example;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.DateUtil;

/**
 * 通用处理工具
 * 
 */
public class CommonUtils {
	/**
	 * 获取用户指定表头和属性字段(或map的key)的映射关系
	 * 
	 * @param titleNameArr 用户指定的Excel表头数组
	 * @param nameArr      Excel表头对应的实体类的属性名或Excel表头对应Map的key
	 * @return 表头和属性(或key)的映射关系
	 */
	public static Map<String, String> titleMapFile(String[] titleNameArr, String[] nameArr) {
		Map<String, String> map = new HashMap<String, String>();
		for (int i = 0; i < titleNameArr.length; i++) {
			map.put(titleNameArr[i], nameArr[i]);
		}
		return map;
	}

	/**
	 * 用户指定的Excel表头数组转换成TitleCell列表
	 * 
	 * @param titleNameArr 用户指定的Excel表头数组
	 * @return TitleCell对象列表
	 */
	public static List<TitleCell> convertToTitleList(String[] titleNameArr) {
		List<TitleCell> titleList = new ArrayList<TitleCell>();
		for (int i = 0; i < titleNameArr.length; i++) {
			titleList.add(TitleCell.getInstance(i, titleNameArr[i]));
		}
		return titleList;
	}

	/**
	 * 日期转星期
	 * 
	 * @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];
	}

	/**
	 * 得到date单元格格式的值
	 * 
	 * @param dataFormat       来自Cell.getCellStyle().getDataFormat()的值
	 * @param dataFormatString 来自Cell.getCellStyle().getDataFormatString()的值
	 * @param value            来自Cell.getNumericCellValue()的值
	 * @return
	 */
	public static String getFormatDateStringValue(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 DateFormaters.COMMON_DATE_FORMAT.format(date);
		}
		/**
		 * 年月日
		 */
		if (Constants.EXCEL_FORMAT_INDEX_DATE_NYR_STRING.contains(dataFormatString)) {
			return DateFormaters.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 DateFormaters.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 DateFormaters.COMMON_DATE_FORMAT_YR.format(date);

		}
		/**
		 * 月
		 */
		if (Constants.EXCEL_FORMAT_INDEX_DATE_Y_STRING.contains(dataFormatString)) {
			return DateFormaters.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 DateFormaters.COMMON_TIME_FORMAT.format(DateUtil.getJavaDate(value));
		}
		/**
		 * 单元格为其他未覆盖到的类型
		 */
		if (DateUtil.isADateFormat(dataFormat, dataFormatString)) {
			return DateFormaters.COMMON_TIME_FORMAT.format(value);
		}

		return null;
	}
}
package com.example;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 常量
 */
public interface Constants {
	/**
	 * 所有日期和时间
	 */
	List<Short> ALL_EXCEL_FORMAT_INDEX = Arrays.asList(new Short[] { 14, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31, 32, 33,
			45, 46, 47, 176, 177, 178, 179, 180, 181, 182, 55, 183, 56, 184, 185, 57, 186, 58, 187, 188, 189, 190, 191,
			192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208 });
	/**
	 * 星期 默认格式
	 */
	String COMMON_DATE_FORMAT_XQ = "星期";
	/**
	 * 周 默认格式
	 */
	String COMMON_DATE_FORMAT_Z = "周";
	/**
	 * 07版时间=time的Cell.getCellStyle().getDataFormat()值
	 */
	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的Cell.getCellStyle().getDataFormat()值
	 */
	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的Cell.getCellStyle().getDataFormat()值
	 */
	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 });
	/**
	 * 03版日期 总date的Cell.getCellStyle().getDataFormat()值
	 */
	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-年月日时分秒-Cell.getCellStyle().getDataFormatString()
	 */
	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-年月日Cell.getCellStyle().getDataFormatString()
	 */
	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-年月-Cell.getCellStyle().getDataFormatString()
	 */
	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-月日Cell.getCellStyle().getDataFormatString()
	 */
	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-Cell.getCellStyle().getDataFormatString()
	 */
	List<String> EXCEL_FORMAT_INDEX_DATE_XQ_STRING = Arrays.asList("[$-804]aaaa;@", "[$-804]aaaa");
	/**
	 * date-周X-Cell.getCellStyle().getDataFormatString()
	 */
	List<String> EXCEL_FORMAT_INDEX_DATE_Z_STRING = Arrays.asList("[$-804]aaa;@", "[$-804]aaa");
	/**
	 * date-月X-Cell.getCellStyle().getDataFormatString()
	 */
	List<String> EXCEL_FORMAT_INDEX_DATE_Y_STRING = Arrays.asList("[$-409]mmmmm;@", "mmmmm", "[$-409]mmmmm");
	/**
	 * time - 时间-Cell.getCellStyle().getDataFormatString()
	 */
	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后缀名
	 */
	public static String EXCEL_SUFFIX_07 = "xlsx";
	/**
	 * 03版excel后缀名
	 */
	public static String EXCEL_SUFFIX_03 = "xls";

	public static void main(String[] args) {
		Set<Short> set = new HashSet<Short>();
		set.addAll(EXCEL_FORMAT_INDEX_07_TIME);
		set.addAll(EXCEL_FORMAT_INDEX_07_DATE);
		set.addAll(EXCEL_FORMAT_INDEX_03_TIME);
		set.addAll(EXCEL_FORMAT_INDEX_03_DATE);
		set.addAll(Arrays.asList(new Short[] { 55, 56, 57, 58 }));
		System.out.println(set);
	}
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
注:下文中的 *** 代表文件名中的版本号。 # 【poi-ooxml-***.jar中文文档.zip】 中包含: 中文文档:【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【poi-ooxml-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【poi-ooxml-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【poi-ooxml-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【poi-ooxml-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-ooxml-***.jar中文文档.zip】,再解压其中的 【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '***' Gradle (Short): implementation 'org.apache.poi:poi-ooxml:***' Gradle (Kotlin): implementation("org.apache.poi:poi-ooxml:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` org.apache.poi.ooxml org.apache.poi.ooxml.dev org.apache.poi.ooxml.extractor ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.apache.poi.ooxml.POIXMLDocument org.apache.poi.ooxml.POIXMLDocumentPart org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart ...... ```
注:下文中的 *** 代表文件名中的版本号。 # 【poi-ooxml-***.jar中文文档.zip】 中包含: 中文文档:【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【poi-ooxml-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【poi-ooxml-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【poi-ooxml-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【poi-ooxml-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-ooxml-***.jar中文文档.zip】,再解压其中的 【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '***' Gradle (Short): implementation 'org.apache.poi:poi-ooxml:***' Gradle (Kotlin): implementation("org.apache.poi:poi-ooxml:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` org.apache.poi.ooxml org.apache.poi.ooxml.dev org.apache.poi.ooxml.extractor ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.apache.poi.ooxml.POIXMLDocument org.apache.poi.ooxml.POIXMLDocumentPart org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart ...... ```
注:下文中的 *** 代表文件名中的版本号。 # 【poi-ooxml-***.jar中文文档.zip】 中包含: 中文文档:【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【poi-ooxml-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【poi-ooxml-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【poi-ooxml-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【poi-ooxml-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-ooxml-***.jar中文文档.zip】,再解压其中的 【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '***' Gradle (Short): implementation 'org.apache.poi:poi-ooxml:***' Gradle (Kotlin): implementation("org.apache.poi:poi-ooxml:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` org.apache.poi.ooxml org.apache.poi.ooxml.dev org.apache.poi.ooxml.extractor ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.apache.poi.ooxml.POIXMLDocument org.apache.poi.ooxml.POIXMLDocumentPart org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart ...... ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豢龙先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值