java poi 设置时间空间_java poi 获取单元格值时间

这篇博客主要介绍了在Java POI操作Excel时,如何处理单元格中的日期格式,包括转换为-yyyy年MM月dd日格式的方法。通过检查单元格的样式和数据格式,确定合适的日期处理方式。
摘要由CSDN通过智能技术生成

/** poi特殊日期格式:数字格式化成-yyyy年MM月dd日,格式

**/

private static ArrayList PoiDateList = new ArrayList() {

{

add("年");

add("月");

add("日");

}

};///

///获取XSSFRow的值(全部统一转成字符串)///

///

///

///

public static String GetValue(Row row, intindex) {

Cell rowCell=row.getCell(index);return rowCell == null ? "": GetValueByCellStyle(rowCell, rowCell.getCellType());

}///

///根据单元格的类型获取单元格的值///

///

///

///

public static String GetValueByCellStyle(Cell rowCell, introwCellType) {

String value= "";switch(rowCellType) {caseCell.CELL_TYPE_STRING:

value=rowCell.getStringCellValue();break;caseCell.CELL_TYPE_NUMERIC://获取单元格值的格式化信息

String dataFormat =rowCell.getCellStyle().getDataFormatString();//判断格式化信息中是否存在:年月日

AtomicReference isDate = new AtomicReference<>(false);if (!StringHelper.IsNullOrWhiteSpace(dataFormat))

PoiDateList.forEach(x-> isDate.set(isDate.get() ||dataFormat.contains(x)));if(DateUtil.isCellDateFormatted(rowCell)) {

value= new SimpleDateFormat("yyyy-MM-dd").format(DateUtil.getJavaDate(rowCell.getNumericCellValue()));

}else if(DateUtil.isCellInternalDateFormatted(rowCell)) {

value= new SimpleDateFormat("yyyy-MM-dd").format(DateUtil.getJavaDate(rowCell.getNumericCellValue()));

}//有些情况,时间搓?数字格式化显示为时间,不属于上面两种时间格式

else if (isDate.get()) {

value= new SimpleDateFormat("yyyy-MM-dd").format(rowCell.getDateCellValue());

}//有些情况,时间搓?数字格式化显示为时间,不属于上面两种时间格式

else if (dataFormat == null) {

value= new SimpleDateFormat("yyyy-MM-dd").format(DateUtil.getJavaDate(rowCell.getNumericCellValue()));

}else{if(StringHelper.IsNullOrWhiteSpace(dataFormat)) {

value=String.valueOf(rowCell.getNumericCellValue());

}else{if (rowCell.getCellStyle().getDataFormatString().contains("$")) {

value= "$" +rowCell.getNumericCellValue();

}else if (rowCell.getCellStyle().getDataFormatString().contains("¥")) {

value= "¥" +rowCell.getNumericCellValue();

}else if (rowCell.getCellStyle().getDataFormatString().contains("¥")) {

value= "¥" +rowCell.getNumericCellValue();

}else if (rowCell.getCellStyle().getDataFormatString().contains("€")) {

value= "€" +String.valueOf(rowCell.getNumericCellValue());

}else{

value=String.valueOf(rowCell.getNumericCellValue());

}

}

}break;caseCell.CELL_TYPE_BOOLEAN:

value=String.valueOf(rowCell.getBooleanCellValue());break;caseCell.CELL_TYPE_ERROR:

value=ErrorEval.getText(rowCell.getErrorCellValue());break;caseCell.CELL_TYPE_FORMULA://TODO: 是否存在 嵌套 公式类型

value =GetValueByCellStyle(rowCell, rowCell.getCachedFormulaResultType());break;default:

System.out.println(rowCell);break;

}returnvalue;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值