怎么使用运行 打开wordpress,关键词seo,建设网站的公司兴田德润可以吗,wordpress 修改源码java通过poi读取excel中的日期类型数据或自定义类型日期
Java 读取Excel表格日期类型数据的时候#xff0c;读出来的是这样的 12-十月-2019#xff0c;而Excel中输入的是 2019/10/12 或 2019-10-12
poi处理excel时#xff0c;当excel没有明确指明是哪个类型的数据时…java通过poi读取excel中的日期类型数据或自定义类型日期
Java 读取Excel表格日期类型数据的时候读出来的是这样的 12-十月-2019而Excel中输入的是 2019/10/12 或 2019-10-12
poi处理excel时当excel没有明确指明是哪个类型的数据时poi很可能处理单元格的日期数据时就有可能是一串数字而使用java程序基本无法转换。
为了解决以上的问题本人收集了各种资料目前来总结一下供碰到此类问题的你作参考。
Excel数据处理
Excel存储日期、时间均以数值类型进行存储读取时POI先判断是是否是数值类型再进行判断转化
1、数值格式(CELL_TYPE_NUMERIC):
1.纯数值格式getNumericCellValue() 直接获取数据
2.日期格式处理yyyy-MM-dd, d/m/yyyy h:mm, HH:mm 等不含文字的日期格式
1).判断是否是日期格式HSSFDateUtil.isCellDateFormatted(cell)
所有日期格式都可以通过getDataFormat()值来判断
yyyy-MM-dd----- 14
yyyy年m月d日--- 31
yyyy年m月------- 57
m月d日 ---------- 58
HH:mm----------- 20
h时mm分 ------- 32
接下来是针对excel各种数据类型来进入转换基本涵盖所需要的如果没有你需要的可以在此基础上添加 //获取单元格各类型值返回字符串类型public static String getCellValueByCell(Cell cell) {//判断是否为null或空串if (cellnull || cell.toString().trim().equals()) {return ;}String cellValue ;int cellTypecell.getCellType();switch (cellType) {case Cell.CELL_TYPE_NUMERIC: // 数字short format cell.getCellStyle().getDataFormat();if (DateUtil.isCellDateFormatted(cell)) {SimpleDateFormat sdf null; //System.out.println(cell.getCellStyle().getDataFormat()cell.getCellStyle().getDataFormat());if (format 20 || format 32) { sdf new SimpleDateFormat(HH:mm); } else if (format 14 || format 31 || format 57 || format 58) { // 处理自定义日期格式m月d日(通过判断单元格的格式id解决id的值是58) sdf new SimpleDateFormat(yyyy-MM-dd); double value cell.getNumericCellValue(); Date date org.apache.poi.ss.usermodel.DateUtil .getJavaDate(value); cellValue sdf.format(date); }else {// 日期 sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); } try {cellValue sdf.format(cell.getDateCellValue());// 日期} catch (Exception e) {try {throw new Exception(exception on get date data !.concat(e.toString()));} catch (Exception e1) {e1.printStackTrace();}}finally{sdf null;}} else {BigDecimal bd new BigDecimal(cell.getNumericCellValue()); cellValue bd.toPlainString();// 数值 这种用BigDecimal包装再获取plainString可以防止获取到科学计数值}break;case Cell.CELL_TYPE_STRING: // 字符串cellValue cell.getStringCellValue();break;case Cell.CELL_TYPE_BOOLEAN: // BooleancellValue cell.getBooleanCellValue();;break;case Cell.CELL_TYPE_FORMULA: // 公式cellValue cell.getCellFormula();break;case Cell.CELL_TYPE_BLANK: // 空值cellValue ;break;case Cell.CELL_TYPE_ERROR: // 故障cellValue ERROR VALUE;break;default:cellValue UNKNOW VALUE;break;}return cellValue;} 每天学习一点点你就进步一点点。