在POI中,数字转换的问题

声明:一下是我在做excel批量导入的时候发现的问题,记录下,如果以便以后再工作中遇到这个问题方便查找。

    switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_STRING:
                            value = cell.getStringCellValue();
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            if (DateUtil.isCellDateFormatted(cell)) {
                                Date date = cell.getDateCellValue();
                                if (date != null) {
                                    value = new SimpleDateFormat("yyyy-MM-dd").format(date);
                                }
                                else {
                                    value = "";
                                }
                            }
                            else {
                                //注意,如果在excel中的值为数字,一般是double类型的,而这个数字是不是真正的double类型,或者是你想要的数字,就用下面这个判断
                               //如果匹配下面的正则表达式,说明可能是double,如果不匹配一定是double
                                DecimalFormat decimalFormat = new DecimalFormat("#.000000");
                                String resultStr = decimalFormat.format(new Double(cell.getNumericCellValue() + ""));
                                if (resultStr.matches("^[-+]?\\d+\\.[0]+$")) {
                                    value = resultStr.substring(0, resultStr.indexOf("."));
                                }
                                else {
                                    value = cell.getNumericCellValue() + "";
                                }
                            }
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            // 导入时如果为公式生成的数据则无值
                            if (!cell.getStringCellValue().equals("")) {
                                value = cell.getStringCellValue();
                            }
                            else {
                                value = cell.getNumericCellValue() + "";
                            }
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            value = "";
                            break;
                        case Cell.CELL_TYPE_BOOLEAN:
                            value = (cell.getBooleanCellValue() == true ? "Y" : "N");
                            break;
                        default:
                            value = "";
                        }


你可能感兴趣的:(poi,double类型)